2

我正在尝试使用 .indexOf 来确定数组是否包含字符串。有些东西导致错误,但我不知道是什么。我确信这是一件非常简单的事情,但我不懂语言,所以看不到它。怎么了?

//this code creates an error in IE
var myMines=new Array();
var newMine="22";
var myVar = myMines.indexOf(newMine);   //when I comment out this line, the page does not generate an error
4

6 回答 6

3

在某些现代浏览器中添加 indexOf 之前,它专门用于在一个字符串中搜索另一个字符串并返回起始索引。您正在尝试在空数组上使用此函数,我猜是在不支持数组的 indexOf 函数的浏览器中。

于 2012-04-04T17:47:07.357 回答
3

您是否偶然使用 IE 8(或更低版本)? Array.indexOf仅适用于 IE 9+、Firefox 3+ 和 Chrome 7+。

来源: http: //kangax.github.com/es5-compat-table/

文档Array.indexOf(还包括在不支持它的浏览器中实现此功能的函数):https ://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf

于 2012-04-04T17:49:05.990 回答
1

您所做的就是创建一个数组,然后查看其中是否存在某些东西。

newMine 只是您尝试在空数组中查找的值。尝试先填充数组。

于 2012-04-04T17:45:52.110 回答
1

你所做的基本上是:

  • 创建一个数组;
  • 创建一个变量;
  • 忘记将其添加到数组中;
  • 向数组询问数组中 nou 项的位置。
于 2012-04-04T17:47:58.637 回答
1

我刚刚将您的代码发布到我的 Firebug 控制台(运行 Firefox 11)中并且它工作正常。由于您的数组在这里是“空的”,因此 indexOf() 只返回-1。也许您的脚本无法处理 -1 值。但是,我相信这段代码应该适用于大多数浏览器。谁知道呢,也许你刚刚在 chrome 的 javascript 实现中发现了一个 bug (^^)。

于 2012-04-04T17:50:44.103 回答
0

返回字符串的IndexOf当前索引/位置(0 base),即

var myMines="Hello World";
var myVar = myMines.indexOf('W');
alert(myVar); // Will alert 6 because 'W' is at the 7th position (first index is 0) so index is 6
于 2012-04-04T17:51:16.333 回答