javascript参数获取错误的数字
我正在尝试使用下面的代码在Javascript中动态创建一个菜单,其中包含一个函数,onclick属性中有一个参数:javascript参数获取错误的数字,javascript,jquery,html,Javascript,Jquery,Html,我正在尝试使用下面的代码在Javascript中动态创建一个菜单,其中包含一个函数,onclick属性中有一个参数: function createCameraMenu() { var nav = document.createElement('nav'); var ul = document.createElement('ul'); ul.className = "menu"; for (var i = 0; i < cameraID.length;
function createCameraMenu() {
var nav = document.createElement('nav');
var ul = document.createElement('ul');
ul.className = "menu";
for (var i = 0; i < cameraID.length; i = i + 1) {
var liField = document.createElement('li');
var aField = document.createElement('a');
aField.textContent = "CAMERA " + i;
aField.onclick = function() {
hideImages(i);
};
li.appendChild(aField);
ul.appendChild(li);
}
nav.appendChild(ul);
document.body.appendChild(nav);
}
<nav>
<ul class="menu" >
<li><a href="#" onClick="hideImages(0)">CAMERA 1</a></li>
<li><a href="#" onClick="hideImages(1)">CAMERA 2</a></li>
<li><a href="#" onClick="hideImages(2)">CAMERA 3</a></li>
</ul>
</nav>
函数createCameraMenu(){
var nav=document.createElement('nav');
var ul=document.createElement('ul');
ul.className=“菜单”;
对于(变量i=0;i
结果应为以下代码:
function createCameraMenu() {
var nav = document.createElement('nav');
var ul = document.createElement('ul');
ul.className = "menu";
for (var i = 0; i < cameraID.length; i = i + 1) {
var liField = document.createElement('li');
var aField = document.createElement('a');
aField.textContent = "CAMERA " + i;
aField.onclick = function() {
hideImages(i);
};
li.appendChild(aField);
ul.appendChild(li);
}
nav.appendChild(ul);
document.body.appendChild(nav);
}
<nav>
<ul class="menu" >
<li><a href="#" onClick="hideImages(0)">CAMERA 1</a></li>
<li><a href="#" onClick="hideImages(1)">CAMERA 2</a></li>
<li><a href="#" onClick="hideImages(2)">CAMERA 3</a></li>
</ul>
</nav>
但是在创建菜单之后,对于单击的任何项目,都会执行函数hideImages(3)。出于某种原因,所有my函数都是使用相同的参数(3)创建的,即For循环中拒绝的“i”值。我的代码中没有全局变量i,我不知道为什么会发生这种情况。此函数在HTML文件头部的脚本标记中执行。您需要使用,例如:
您需要使用,例如:
初始化j的位置可能重复?按照a.Wolff的建议添加闭包或直接绑定hideImages:
aField.onclick=hideImages.bind(aField,j)代码>“j”是个错误。将其更改为“i”。j初始化的位置可能重复?按照a.Wolff的建议添加闭包或直接绑定hideImages:aField.onclick=hideImages.bind(aField,j)代码>“j”是个错误。把它改成“我”。