我有一个带两个参数的函数,但第二个参数因任何原因未定义。我似乎无法弄明白为什么。
function foo(sometext, i) {
alert(sometext);
alert(i);
}
function bar() {
for(var i = 0; i < 1; i++) {
foo("text", i);
}
}
当我在JSFiddle上运行它时,它似乎工作。当我在本地服务器上运行类似的代码时,我得到错误,说我在foo()中未定义。我不知道为什么,因为我正在为它传递一个价值。我使用的是WAS8.0服务器和IE9。
编辑:添加真实代码。
function showResult(data) {
$('#searchResults').empty();
for(var i = 0; i < data.length; i++) {
$('#searchResults').append(htmlifyResultsRow(data[i]), i).trigger('create');
}
}
function htmlifyResultsRow(dataRow, i) {
alert(i);
//Undefined already. I call i.toString() in places, which is where the error shows it self
}
showResults()函数由其他一些代码调用。
答案 0 :(得分:2)
仔细看看这个表达式:
$('#searchResults').append(htmlifyResultsRow(data[i]), i)
您将i
传递给.append()
,而不是传递给htmlifyResultsRow()
。这就是您i
函数中undefined
为htmlifyResultsRow
的原因,因为它从未首先传递i
的值。
您可能希望做的是:
$('#searchResults').append(htmlifyResultsRow(data[i], i))
答案 1 :(得分:1)
这就是问题:
$('#searchResults').append(htmlifyResultsRow(data[i]), i)
它应该是:
$('#searchResults').append(htmlifyResultsRow(data[i], i))