如果根据参数给table中的tr绑定不同事件

function update() {
    var container = document.getElementById("ItemContainer");
    container.innerHTML = "";
    for(var i=0;i<this.bookMarkList.length;i++){        
        var name = this.ItemContainer[i].name;
        var tr = document.createElement('tr');              
        var td = document.createElement('td');
        tr.appendChild(td);
        tr.onclick =  function(){add(name);}; 
      container.appendChild(tr);
    }    
}

绑定相同函数,但是每个tr传的参数不同,应该怎样写呢。
现在这样写每个tr都被绑定最新赋值的参数。

阅读 2.3k
2 个回答
// 给你写个demo吧
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<style>

</style>
<body>
<table id="ItemContainer" border="1" width="100"></table>
<script>
    function add (name) {
        alert(name);
    }
    function update() {
        var container = document.getElementById("ItemContainer");
        console.log(container);
        container.innerHTML = "";
        for(let i=0; i<5; i++) {        
            let name = i;
            let tr = document.createElement('tr');              
            let td = document.createElement('td');
            td.innerHTML = i;
            tr.appendChild(td);
            console.log(name)
            tr.onclick = function (){
                return add(name);
            }; 
          container.appendChild(tr);
        }  
    }
    update()  
</script>
</body>
</html>
    for(var i=0;i<this.bookMarkList.length;i++){        
        (function(i){
            var name = this.ItemContainer[i].name;
            var tr = document.createElement('tr');              
            var td = document.createElement('td');
            tr.appendChild(td);
            tr.onclick =  function(){add(name);}; 
            container.appendChild(tr);
        })(i)
    }  
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题