关于JS传值与取值问题

如下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 = '<div class="result-li">'+
                    '<div class="td-song"><span><a id="song">'+song_name+'</a></span></div>'+
                    '<div class="td-singer"><span><a id="artist">'+artist_name+'</a></span></div>'+
                    '<div class="td-special"><span><a id="album">'+album_name+'</a></span></div>'+
                    '</div>';
    $li = $(result_li);
    $li.data("songID",song_id);
    $("#result_list").append($li);
    
}

clipboard.png

阅读 3k
1 个回答

我看代码应该没啥问题,问题可能还是你的数据存在问题,应该是有数据song_id本来就不存在。你应该去用断点调试一下,一句一句的执行看看,而不是用console的方式。一个列表的数据输出来,console输出一堆的东西可能会看错。经验来看,遇到诡异的问题,先看看自己对问题的定位是不是正确的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题