javascript - 关于JS传值与取值问题
大家讲道理
大家讲道理 2017-04-10 17:46:28
0
1
601

如下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);
    
}

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

reply all(1)
洪涛

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

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template