开发者问题收集

JavaScript 中 IndexOf 的正确用法

2012-05-21
5481

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

这是我的代码片段:

<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

希望这是有意义的!

3个回答

来自 MDN :

string.indexOf(searchValue[, fromIndex])

Returns the index within the calling String object of the first occurrence of the specified value, starting the search at fromIndex , returns -1 if the value is not found.

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

VisioN
2012-05-21

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

Andy E
2012-05-21

您应该使用 == 0 ,因为一开始索引为 0

Parth Thakkar
2012-05-21