当没有要拆分的字符时,Javascript Split不会工作

时间:2015-09-22 23:22:33

标签: javascript jquery

HTML

(defn indexof-zero [a]
  (->> a
    (map-indexed vector)
    (filter #(zero? (second %)))
    (map first)))

(indexof-zero [-1 -1 -2 -1 -4 0 -6 -1 -5 -2 -10 4 -12 -4 -6 -1 -16 3 -18 2 -10 -8 -22 12 -19
-10 -14 0 -28 12 -30 -1 -18 -14 -22 19 -36 -16 -22 10 -40 12 -42 -4 -12 -20 -46 28 -41 -7])

=> (5 27)

Jquery的/使用Javascript

<div id="code1" data-code="123;12"></div>
<div id="code2" data-code="231"></div>

由于code2没有“;”,因此代码停止工作。最后一个警报不起作用,也不会在不可拆分代码之后的任何代码。如何用“;”分割代码即使它可能没有“;”字符?

2 个答案:

答案 0 :(得分:4)

使用以下内容:

alert($("#code1").attr("data-code").split(";")[0]);
alert($("#code2").attr("data-code").split(";")[0]);
alert('test');

第二行失败的原因是因为使用number时jQuery隐式地将值类型化为$.data。它与String.prototype.split的实现无关,因为如果分隔符不存在,则返回一个第0个元素为完整字符串的数组。

为了解决问题,请使用$.attr而不是$.data来确保jQuery在内部没有将值类型化为另一种类型,如果它看起来像另一种类型。

JSFiddle上进行测试。

答案 1 :(得分:4)

data()会将值编号为数字(如果是数字

尝试:

$("#code2").data("code").toString().split(';')

有关data() docs

的html 5属性部分中的类型转换的更多信息