为什么我的indexOf语句会产生错误

时间:2012-04-04 17:43:35

标签: javascript

我正在尝试使用.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

6 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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

答案 2 :(得分:1)

你正在创建一个数组,然后看看它是否存在。

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

答案 3 :(得分:1)

你做的基本上是:

  • 创建数组;
  • 创建变量;
  • 忘记将其添加到数组中;
  • 向数组询问数组中n的项目的位置。

答案 4 :(得分:1)

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

答案 5 :(得分: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