所以我正在调用以下函数:
function updateOutput(a){
var n = $('#selector').val();
$('#hueslide').val(a[n].hue);
$('#huetext').val(a[n].hue);
}
我收到一个错误:“无法读取未定义的属性'hue'。”
但是,当我使用console.log(n)时,它返回一个值。当我在[n]中手动插入相同的值时,我得到了预期的结果。我猜这是一个异步问题,但相同的代码在早期版本中工作,我不知道如何解决它。
具体来说,当尝试使用console.log调试updateOutput时,我得到以下内容:
console.log(n); //returns 0
console.log(a); //returns an array of objects
console.log(a[0]); //returns first object in array
console.log(a(n)); // returns undefined
答案 0 :(得分:3)
该错误并不是说n
未定义,甚至不是a
,而是说在分配给hue
的任何内容上都没有属性a[n]
。无论您传递给updateOutput
的是什么,都没有与n
匹配的关键字hue
。
答案 1 :(得分:1)
试试这样:
function updateOutput(a){
$(document).ready(function(e) {
var n = $('#selector').val();
$('#hueslide').val(a[n].hue);
$('#huetext').val(a[n].hue);
});
}
您必须等到元素完全加载。这就是你必须使用现成方法的原因。
答案 2 :(得分:0)
好的,我明白了。结果0
中n
string
的值{}传递了n = parseInt(n);
。因此添加{{1}}解决了这个问题。