动态设置Javascript函数

Jac*_*cob 3 javascript function

HTML

<body>
    <div id='test' onClick="load()">
       2
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

使用Javascript

load = function() {
  test.innerHTML = "";

    for (var i = 0; i < 5; i++) {

        var p = document.createElement("p");
        p.innerHTML = "Link";

        p.onclick = function () {
            alert("LINK NR: " + i)
        }

        document.getElementById('test').appendChild(p);

    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,为什么函数总是返回最后一个value

这是代码的小提琴.

Vin*_*uis 5

p.onclick只有在元素上触发"click"事件时才会调用该函数,然后i当循环已经完成执行时,该值将为5.

你期望每次循环迭代都会执行函数语句 - 事实并非如此.如果确实执行了,那么对于每次迭代,您都会收到一条警告消息,无论是否单击了元素.

这可以通过保持console.log函数的外部和内部来检查,并且您将发现每次迭代时console.log函数外部的语句将在浏览器的控制台中打印,但console.log函数内部的语句将不会在循环的每次迭代中执行.