split()不能只使用1个值

时间:2016-04-06 17:24:26

标签: javascript jquery split

有没有办法让split()只使用一个值?

如果您将以下代码中的 data-ids 更改为122的单个字符串,则split将不返回任何内容,它应返回122.

https://jsfiddle.net/mghwscox/

var ids = $('div').data('ids').split(',');

$(ids).each(function(key, value) {
	$('div').append('Value: ' + value + '<br>');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div data-ids="122,154,344"></div>

5 个答案:

答案 0 :(得分:3)

var ids = $('div').data('ids').toString().split(',');

$(ids).each(function(key, value) {
    $('div').append('Value: ' + value + '<br>');
});

请注意,我在你的ids声明中添加了toString()。

答案 1 :(得分:3)

使用jQuery,您可以将值存储为普通数组。

.../Search/?Name=Bob

一个工作片段:

&#13;
&#13;
<div id="source" data-ids="[122,154,344]"></div>
<script>
    var list = $("#source").data('ids');
    console.log(list.length); //3
</script>
&#13;
&#13;
&#13;

注意:您的代码因一个号码而失败的原因是因为jQuery会将一个号码转换为<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="source" data-ids="[122,154,344]"></div> <div id="target"></div> <script> var list = $("#source").data('ids'); $("#target").html(JSON.stringify(list) + " has " + list.length + " elements"); // 3 </script>个对象,并且“#39; Number&#39;对象没有Number方法。

答案 2 :(得分:3)

data()在读取数据时尝试进行类型转换。所以你有两个选择。

您可以使用data()并且必须使用toString()以确保您有一个字符串。

var ids = $('div').data('ids').toString().split(',');

其他选项是不使用data()并使用attr()来读取值。

var ids = $('div').attr("data-ids").split(',');

答案 3 :(得分:0)

当用户只给出一个数字时,它被视为数字,因为数字不存在split()方法,所以它给出了错误。如果你提供以逗号分隔的值,它将被视为字符串,因此工作正常。

var ids = $('div').data('ids');
console.log(ids,typeof ids);
ids = ids.toString().split(',');;

$(ids).each(function(key, value) {
	$('div').append('Value: ' + value + '<br>');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div data-ids="122"></div>

答案 4 :(得分:0)

尝试在拆分之前将其转换为字符串

var ids = ($('div').data('ids')+'').split(',');


$(ids).each(function(key, value) {
    $('div').append('Value: ' + value + '<br>');
});