2
mystring = "playlist/323";
if(mystring.indexOf('playlist/') == 1) {
    alert("We got it");
} else {
    alert("We don't");
}

我希望它会显示“我们知道了”,但事实并非如此。

见我的小提琴http://jsfiddle.net/P2TcW/

4

5 回答 5

4

javascript 中的索引从零开始,您的 if 语句应如下所示:

if(mystring.indexOf('playlist/') == 0)
于 2013-10-02T14:11:00.687 回答
2

在您的情况下,索引/不应返回 1。如果它不存在于您的字符串中,indexOf将返回-1.

if(mystring.indexOf('playlist/') > -1) {
    alert("We got it");
} else {
    alert("We don't");
}
于 2013-10-02T14:12:26.880 回答
1

因为字符串中的第一个字符位于索引 0,而不是 1。

解决方案是:

if(mystring.indexOf('playlist/') === 0)

(使用严格的相等运算符,这是一种很好的做法,因为它同时测试类型和值,而不仅仅是值)。

于 2013-10-02T14:11:20.867 回答
1

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf

我认为您解释indexOf的方式存在一些误解。

alert(mystring.indexOf('/')); //gives you 8

alert(mystring.indexOf('l')); //gives you 1

alert(mystring.indexOf('playlist/')); //gives you 0

if(mystring.indexOf('playlist/') == 0){ //correct way
alert("we got it");
}
于 2013-10-02T14:24:14.123 回答
1

indexOf 将不等于 1,因为字符串“playlist/”的索引实际上是 0,它从 0 开始,如果你得到除 -1 以外的任何东西,你就有匹配

于 2013-10-02T14:13:24.257 回答