Javascript - 从数组到变量

时间:2016-10-19 07:38:37

标签: javascript object scope pass-by-reference pass-by-value

我正在编写JavaScript代码来为网页创建YouTube Play列表。 在编写代码时,我遇到了一个我有点意识到的问题,但似乎我还没理解它。

问题是,我从数组中获取值并将其传递给init onclick事件处理函数。但是,当我点击一个对象时,我没有得到价值,我正在转向它。我得到一个数组对象的最后一个值。

我知道解决方案,如果我使用let代替var,我会得到预期的结果。 let plist_ids = plist[i];代替var plist_ids = plist[i];

我有两个问题。 在不使用LET的情况下,如何在这种情况下获得正确的值? 如果没有简单的解决方案,那么可以使用LET吗?

  <body>
    <div id="plist" >
        <ul>            
        </ul>        
    </div>

    function createList() {
    var play_list = document.getElementById('plist').children[0];
    var plist = player.getPlaylist();
    var atag =[];
    var li = document.createElement("li");

        for (i=0; i<plist.length; i++) {

                var plist_ids = plist[i];  
                atag[i] = document.createElement("a");
                atag[i].innerHTML = i + "<br>";
                atag[i].href = "javascript: void(0);";

                atag[i].onclick = function () {
                                 console.log(plist_ids);
                            };

                li.appendChild(atag[i]);
                play_list.appendChild(li);
            }
    }
    player = {
        getPlaylist: function () {
            return [1,2,3,4,5,6,7,8,9,10];
        }
    }
    createList();
</script>

0 个答案:

没有答案