我正在面对jQuery.each的一些iisue。我在jquery.each语句之外声明了一个变量。在第一次从jquery.each主体初始化变量之后,该变量不可用于下一次迭代。它说未定义。
以下是示例代码
var cname= '';
jQuery.each(candidate_arr['data'], function(index, data){
if(index == 0){
jQuery('.list').append('<li class="cname">'+ data['cname'] +'</li>');
cname= data['cname'];
}
if(cname != data['cname']){
// cname is undefined for index = 1, 2, 3....
jQuery('.list').append('<li class="cname">'+ data['cname'] +'</li>');
var cname = data['cname'];
}
jQuery('.list').append('<li>'+ data['candidate_name'] +'</li>');
})
答案 0 :(得分:1)
回调函数中的范围不同,因此无法访问该变量
尝试正常的js循环
var cname= '';
var candidate_arr = {
data: [{cname:"123"},{cname:"1234"},{cname:"1235"}]
};
for(var index=0; index< candidate_arr['data'].length;index++){
var data = candidate_arr['data'][index];
console.log(data);
console.log(cname);
if(index == 0){
jQuery('.list').append('<li class="cname">'+ data['cname'] +'</li>');
cname= data['cname'];
}
if(cname != data['cname']){
// cname is undefined for index = 1, 2, 3....
jQuery('.list').append('<li class="cname">'+ data['cname'] +'</li>');
var cname = data['cname'];
}
jQuery('.list').append('<li>'+ data['candidate_name'] +'</li>');
}
答案 1 :(得分:0)
您已在每个块var cname
内设置它是否告诉JavaScript引擎在每次迭代中创建一个新变量cname
。它不使用块外的变量的全局变量实例。
您应该了解JavaScript中的变量范围:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var