.split()如果值存在则

时间:2017-05-22 16:08:18

标签: javascript jquery

我有HTML:

<div id="target" data-ids="22,11"></div>

和JS:

var match_ids = jQuery('#target').data("ids");
var match_ids_explode = match_ids.split(',');

它将id分成数组。作品。 但是,如果HTML是:

<div id="target" data-ids="22"></div>

然后match_ids_explode为空。我可以对split(',')函数执行哪些操作,因此它接受data-ids="22",因此match_ids_explode具有一个值:

match_ids_explode[0] // 22

4 个答案:

答案 0 :(得分:3)

当属性中只有一个数字时,jQuery会将其强制转换为数字。这没有split方法。只需使用toString

即可

var match_ids = jQuery('#target').data("ids");
console.log(match_ids)
var match_ids_explode = match_ids.toString().split(',');
console.log(match_ids_explode.length);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="target" data-ids="22"></div>

当存在多个条目时,这将以相同的方式工作,因此不需要进行任何更改。

答案 1 :(得分:1)

Jquery数据方法进行假设和解析输入,所以当你只有22时,你会得到一个数而不是一个字符串。 2种可能的解决方案:

match_ids.toString().split(',')

或者:

var match_ids = jQuery('#target').attr("data-ids");

答案 2 :(得分:0)

如果是单值,即22, match_ids 将变为数字类型。您需要将其转换为字符串,然后您的代码将适用于任何条件。

希望有所帮助

&#13;
&#13;
var match_ids = jQuery('#target').data("ids").toString();
console.log(match_ids);
var match_ids_explode = (match_ids).split(',');
console.log(match_ids_explode);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="target" data-ids="22"></div>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

好的问题是当你将 ids 作为&#34; 22,11&#34; match_ids 的类型为&#39; string&#39;而当它只是&#34; 22&#34;类型是&#39;数字&#39;显然数字没有任何分割功能。

您可以尝试这样做:

<div id="target" data-ids="'22'"></div>

这样 match_ids 将始终是一个字符串, match_ids_explode [0] 将返回&#39; 22&#39;。