for循环中的Javascript数组返回undefined

时间:2013-02-05 09:25:35

标签: javascript jquery

当我用for循环循环这个数组时,它在某种程度上给了我未定义的

updateField(this.value, vehicles[i]+"_brand"

虽然

$("#"+vehicles[i]+"_year").change(function(){

获取数组的正确值。这怎么可能,我该如何解决这个问题?

var vehicles = new Array();
    vehicles[0] = "auto";
    vehicles[1] = "truck";
    vehicles[2] = "motor";

for(var i = 0;i < vehicles.length;i++){
    $("#"+vehicles[i]+"_year").change(function(){
       updateField(this.value, vehicles[i]+"_brand", 1, 2, this.parentNode.id), resetBelow(0,'auto'), show('auto_brand');
    });
}

2 个答案:

答案 0 :(得分:1)

将再次评估更改事件被触发的时间vehicles[i],您将获得i的最后一个值。

更改

vehicles[i]+"_brand"

this.id.split('_')[0]+"_brand"

答案 1 :(得分:0)

看起来你有逗号分号应该是我的分号:

updateField(this.value, vehicles[i]+"_brand", 1, 2, this.parentNode.id); resetBelow(0,'auto'); show('auto_brand');

...或者你的updateField()函数可能有更多参数而你只是过早地关闭了这个函数?