在javascript中使用冒号作为分隔符

时间:2011-05-01 23:23:03

标签: javascript

var data = "needactivation:9";
if (data.indexOf(":") == true) {
    replyData = data.split(":");
    if (replyData[0] == "needactivation") {
        alert("User Id Is " + replyData[1]);
    }
}
else if (data == "success") {
    window.location.href = "/";
}
else {
    alert("Unknown error.");
}

是我的JavaScript。它应该警告用户ID,但它会产生未知错误。这个脚本有什么问题吗?

不确定这部分是否重要,但我也在页面上使用最新的jQuery。

5 个答案:

答案 0 :(得分:5)

indexOf返回一个索引(如果找不到则返回-1),而不是布尔值。改变这个:

if (data.indexOf(":") == true) {

对此:

if (data.indexOf(":") !== -1) {

或者,你可以split,然后检查replyData.length

答案 1 :(得分:2)

找到字符串后,

String.indexOf()会返回一个数字> = 0,而不是布尔值true

您的测试应为:

if (data.indexOf(":") >= 0) {
    ...
}

答案 2 :(得分:1)

var data = "needactivation:9";
if (data.indexOf(":") >= 0) {
    replyData = data.split(":");
    if (replyData[0] == "needactivation") {
        alert("User Id Is " + replyData[1]);
    }
}
else if (data == "success") {
    window.location.href = "/";
}
else {
    alert("Unknown error.");
}

答案 3 :(得分:0)

尝试if (data.indexOf(":") != -1) {

答案 4 :(得分:0)

除了验证上述答案是否正确之外,我只是想说,在您将true更改为-1后,您可能还想使用某种尝试/捕捉逻辑因为像Anything:这样的字符串会有一个indexOf(":") >= 0,但会以这样的方式分割,以至于您对replyData[1]的引用会引发另一个错误。