我正在编写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>