3

我有一个简单的 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变量以 say 开头,我1|Accept应该> -1在 Javascript 语句中使用还是> 0

希望这是有道理的!

4

4 回答 4

4

来自MDN

string.indexOf(searchValue[, fromIndex])

String返回指定值第一次出现的调用对象内的索引,从 开始搜索,如果未找到该值则fromIndex返回。-1

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

于 2012-05-21T09:28:30.940 回答
3

0 是第一个字母的索引,所以如果你的子字符串出现在字符串的开头,> 0将不匹配。所以> -1在字符串中的任何地方使用 for 并且== 0总是在字符串的开头使用。

于 2012-05-21T09:26:12.300 回答
0

您应该== 0从一开始就使用,索引将为 0

于 2012-05-21T09:26:07.877 回答
0

mc_u1.indexOf("1|Accept") > 0如果字符串仅在某处包含子字符串,也将成立。如果-1找不到子字符串。

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

于 2012-05-21T09:30:03.567 回答