javascript - Javascript 函数分配给按钮单击的问题

标签 javascript html

Possible Duplicate:
Assign click handlers in for loop

我对 javascript 有点天真。我有这个 javascript 代码,应该在单击按钮时运行。按钮是在循环中动态生成的。我期望的是每次单击按钮时都会收到不同的变量。但我收到的始终是数组中的最后一个变量。请参阅下面的代码。有人看出这里有明显的错误吗?

<!doctype html>
<html> 
<head>      
<script  type="text/javascript"> 

var myCars=["Saab","Volvo","BMW"]; 

    function loadCars() {
var carList = document.getElementById('mydiv');

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

//Append button
        var el = document.createElement("button");
        var car = myCars[i];
        el.name = "view_car";
        el.id = "view_car";
        el.value = "View car";
        el.type = "button";
        el.title = "View car "+i;
        el.innerHTML = "View car "+car;
        el.onclick = function() { 
            showMe(car,i);
        };

    carList.appendChild(el);
}

}

function showMe(carName,index){

    alert("Selected car="+carName +" , index="+index);
}

    </script>

</head>

<body  onload="loadCars()">

Cars will be loaded here 
<div  id="mydiv" class="carlist"></div>

</body>
</html>

Button click output

最佳答案

没有什么明显的错误。但是,您可以在 onclick 函数中使用 cari 。两者都依赖于外部 cari 并进行操作。您必须使用闭包来中断此引用:

    el.onclick = (function(carname,index){
        return function() { 
            showMe(carname,index);
        };
    })(car,i);

关于javascript - Javascript 函数分配给按钮单击的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11826388/

相关文章:

javascript - 如何在背景更改时更改文本颜色?

javascript - 如何访问具有相同索引级别但位于不同父 DIV 中的两个元素?

javascript - Kendo 下拉默认占位符

google-analytics - 是否值得使用多个网络跟踪器?

javascript - 有没有办法在页面上后退或前进时触发任意 JavaScript?

javascript confirm() 总是正确的...怎么了?

javascript - 在 Canvas 中使用 arc 方法的 startAngle 以外的值

javascript - 是否有一个插件可以在我的网页中显示 HTML 代码

java - 小程序参数不保留 CRLF

php - 解锁的论坛帖子说已锁定?