在JavaScript中正确使用IndexOf

时间:2012-05-21 09:24:22

标签: javascript indexof

我有一个简单的JavaScript语句,它读取一个字符串并根据它包含的内容触发一个URL,但我不确定我是否正确使用了IndexOf所以我只是想检查一下。 / p>

这是我的代码段:

<script type="text/javascript"> 

var mc_u1 = "somevariable";

if (mc_u1.indexOf("1|Accept") > 0) {
document.writeln("<img src=\"https://www.someurl1.com\">");
}

if (mc_u1.indexOf("1|Refer") > 0) {
document.writeln("<img src=\"https://www.someurl2.com\">");

}

if (mc_u1.indexOf("2|Accept") > 0) {
document.writeln("<img src=\"https://www.someurl3.com\">");

}

if (mc_u1.indexOf("2|Refer") > 0) {
document.writeln("<img src=\"www.someurl4.com\">");

}

</script>

正如您从上面的代码中看到的那样,我正在尝试做的是基于变量mc_u1的内容触发URL(虽然我只是因为显而易见的原因屏蔽了它们,但它们是不同的)。

我的问题是,如果mc_u1变量以1|Accept开头,我应该在Javascript语句中使用> -1还是> 0

希望这是有意义的!

4 个答案:

答案 0 :(得分:4)

来自MDN

  

string.indexOf(searchValue[, fromIndex])

     

返回第一个调用String对象中的索引   发生指定值,从fromIndex开始搜索,   如果找不到值,则返回-1

因此,为了检查您的变量是否以"1|Accept"开头,您应该检查indexOf是否返回0

答案 1 :(得分:3)

0是第一个字母的索引,因此如果您的子字符串出现在字符串的开头,> 0将不匹配。因此,对于字符串中的任何位置使用> -1,并且始终在字符串的开头使用== 0

答案 2 :(得分:0)

您应该使用== 0,因为在开头,索引将为0

答案 3 :(得分:0)

如果字符串仅在某处包含子字符串,则

mc_u1.indexOf("1|Accept") > 0也将为true。 如果找不到子字符串,它将为-1

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf