如下JS代码,for循环遍历输出结果集,然后生成对应的列表页面。if语句判断中在执行createList()方法之前输出的song_id为正确值,但是当值传递到creatList方法中去之后,再输出song_id就变成了undefined。但是有趣的是我同样传递的song_name却输出的是正确值。求解这是为什么?
for(var i = 0;i<songs.length;i++){
var song_name = songs[i].song_name;
var song_id = songs[i].song_Id;
var artist_name = songs[i].artists_name;
var artist_id = songs[i].artists_Id;
var album_name = songs[i].album_name;
var album_id = songs[i].album_Id;
if(i%2==0){
console.log(song_id);
createList(song_name,artist_name,album_name,song_id,artist_id,album_id);
}else{
console.log(song_id);
createEvenList(song_name,artist_name,album_name,song_id,artist_id,album_id);
}
}
function createList(song_name,artist_name,album_name,song_id,artist_id,album_id){
console.log(song_id);
console.log(song_name);
var result_li = '<p class="result-li">'+
'<p class="td-song"><span><a id="song">'+song_name+'</a></span></p>'+
'<p class="td-singer"><span><a id="artist">'+artist_name+'</a></span></p>'+
'<p class="td-special"><span><a id="album">'+album_name+'</a></span></p>'+
'</p>';
$li = $(result_li);
$li.data("songID",song_id);
$("#result_list").append($li);
}
我看代码应该没啥问题,问题可能还是你的数据存在问题,应该是有数据song_id本来就不存在。你应该去用断点调试一下,一句一句的执行看看,而不是用console的方式。一个列表的数据输出来,console输出一堆的东西可能会看错。经验来看,遇到诡异的问题,先看看自己对问题的定位是不是正确的。