javascript参数获取错误的数字

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;

我正在尝试使用下面的代码在Javascript中动态创建一个菜单,其中包含一个函数,onclick属性中有一个参数:

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”是个错误。把它改成“我”。