首页 > 解决方案 > 通过 jQuery 从粘贴到 textarea 的自定义 html 中用逗号分割文本

问题描述

我在 textarea 中粘贴了一些自定义 html。我想用逗号分割它的强度值。我可以访问它的所有值,但这些值是在一行中出现的,没有任何逗号。请看我的代码并给我您的宝贵建议。

$(document).ready(function(){
var $intensity = $("<div/>").html($('.textarea').val()).find("intensity").find("intensity").text();
console.log($intensity);
});
// It should give 64, 88, 32, 53
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea class='textarea'>
<intensity><theta>28</theta><da>4.0</da><intensity>64</intensity><h>1</h></intensity><intensity><theta>32</theta><da>1.3</da><intensity>88</intensity><h>1</h></intensity><intensity><theta>21</theta><da>3.8</da><intensity>32</intensity><h>1</h></intensity><intensity><theta>46</theta><da>2.4</da><intensity>53</intensity><h>1</h></intensity>
</textarea>

标签: jquery

解决方案


您可以使用.map()来获得所需的结果,然后.join(", ")将其从数组转换为字符串。

.map(function(){
   return $.trim($(this).text());
}).get().join(", ");

如:

 var $intensity = $("<div/>").html($('.textarea').val()).find("intensity").find("intensity").map(function(){
        return $.trim($(this).text());
     }).get().join(", ");

演示

$(document).ready(function() {
  var $intensity = $("<div/>").html($('.textarea').val()).find("intensity").find("intensity").map(function(){
               return $.trim($(this).text());
            }).get().join(", ");
  console.log($intensity);
});
// It should give 64, 88, 32, 53
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea class='textarea'>
<intensity><theta>28</theta><da>4.0</da><intensity>64</intensity><h>1</h></intensity><intensity><theta>32</theta><da>1.3</da><intensity>88</intensity><h>1</h></intensity><intensity><theta>21</theta><da>3.8</da><intensity>32</intensity><h>1</h></intensity><intensity><theta>46</theta><da>2.4</da><intensity>53</intensity><h>1</h></intensity>
</textarea>

要获得数组的最大值,您可以使用Math.max.apply(null, $intensity)

阵列演示

$(document).ready(function() {
  var $intensity = $("<div/>").html($('.textarea').val()).find("intensity").find("intensity").map(function(){
               return $.trim($(this).text());
            }).get();
  console.log(Math.max.apply(null, $intensity));
});
// It should give 64, 88, 32, 53
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea class='textarea'>
<intensity><theta>28</theta><da>4.0</da><intensity>64</intensity><h>1</h></intensity><intensity><theta>32</theta><da>1.3</da><intensity>88</intensity><h>1</h></intensity><intensity><theta>21</theta><da>3.8</da><intensity>32</intensity><h>1</h></intensity><intensity><theta>46</theta><da>2.4</da><intensity>53</intensity><h>1</h></intensity>
</textarea>


推荐阅读