我正在尝试使用.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
答案 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)
你做的基本上是:
答案 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