<HTML>
 <HEAD>
<script>
function chk(val){
alert(val);
}
function set(){
var doms = document.getElementById("test");
for(var i = 0; i < 5; i ++){
var btn = document.createElement("button");
btn.value = "click" + i;
btn.onclick = function(){
chk(i);
}
doms.appendChild(btn);
}
}
</script>
 </HEAD> <BODY>
  <div id = "test"></div>
  <input type = button onclick = "set();" value = "set"/>
 </BODY>
</HTML>
如题,我想要的结果是alert出来,0,1,2,3,4,结果不论按哪个按钮都是5...

解决方案 »

  1.   


    <HTML> 
    <HEAD> 
    <script> 
    function chk(val){ 
    alert(val); 

    function set(){ 
    var doms = document.getElementById("test"); 
    for(var i = 0; i < 5; i ++){ 
    (function(i) {
    var btn = document.createElement("button"); 
    btn.value = "click" + i; 
    btn.onclick = function(){ 
    chk(i); 

    doms.appendChild(btn); 
    })(i);


    </script> 
    </HEAD> <BODY> 
      <div id = "test"> </div> 
      <input type = button onclick = "set();" value = "set"/> 
    </BODY> 
    </HTML>
      

  2.   

     <script> function chk(val){ 
    alert(val); 
    } function set(){ 
    var doms = document.getElementById("test"); 
    for(var i = 0; i < 5; i++){ 
    var btn = document.createElement("input"); 
    btn.type="button";
    btn.id="click" + i; 
    btn.value = "click" + i; 
    btn.onclick = function(){
    chk(this.id.replace("click","")); 
    }
    doms.appendChild(btn); 



    </script> 
      

  3.   


    <HTML> 
    <HEAD> 
    <script> 
    function chk(val){ 
    alert(val); 

    function set(){ 
    var doms = document.getElementById("test"); 
    for(var i = 0; i < 5; i ++){ (function(i){
    var btn = document.createElement("button"); 
    btn.value = "click" + i; 
    btn.onclick = function(){ 
    chk(i); 

    doms.appendChild(btn); 
    })(i)


    </script> 
    </HEAD> <BODY> 
      <div id = "test"> </div> 
      <input type = button onclick = "set();" value = "set"/> 
    </BODY> 
    </HTML>
      

  4.   


    <HTML>
        <HEAD>
            <script>
                function chk(val){
                    alert(val);
                }
                function set(){
                    var doms = document.getElementById("test");
                    for(var i = 0; i < 5; i ++){
                        var btn = document.createElement("button");
                        btn.value = "click" + i;
                      
                        btn.onclick = (function(i){
                            var c=i
                            return function(){
                                chk(i);
                            }
                        })(i)
                        doms.appendChild(btn);
                    }
                }
            </script>
        </HEAD>    <BODY>
            <div id = "test"> </div>
            <input type = button onclick = "set();" value = "set"/>
        </BODY>
    </HTML> 
      

  5.   


    <HTML> 
    <HEAD> 
    <script> 
    function chk(val){ 
    alert(val); 

    function set(){ 
    var doms = document.getElementById("test"); 
    for(var i = 0; i < 5; i ++){ 
    var btn = document.createElement("button"); 
    btn._index = "click" + i;
    btn.value = "click" + i; 
    btn.onclick = function(){ 
    chk(this._index); 

    doms.appendChild(btn); 


    </script> 
    </HEAD> <BODY> 
      <div id = "test"> </div> 
      <input type = button onclick = "set();" value = "set"/> 
    </BODY> 
    </HTML> 
      

  6.   


    <HTML> 
    <HEAD> 
    <script> 
    function chk(val){ 
    alert(val.replace('click','')); 

    function set(){ 
    var doms = document.getElementById("test"); 
    for(var i = 0; i < 5; i ++){ 
    var btn = document.createElement("button"); 
    btn.value = "click" + i; 
    btn.onclick = function(){ 
    chk(this.value); 

    doms.appendChild(btn); 


    </script> 
    </HEAD> <BODY> 
      <div id = "test"> </div> 
      <input type = button onclick = "set();" value = "set"/> 
    </BODY> 
    </HTML> 
      

  7.   


    楼上几位的闭包.... btn.click本身都有指针引用了...
      

  8.   

    是啊。我就是用了它的this。不过你给它新加了一个属性值btn._index = "click" + i;而且他要求alert()出来的都是数字 0、1、2、3、4 。所以我就那么写了。开始我也考虑给它随便附加一个属性,在取出来就可以了。比如:btn._no = i; 
    btn.click = function(){
        alert(this._no);//this是个指针就直接指向当前的DOM节点
    }
      

  9.   

    拜托BeenZ 要有点新意好不好 不要别人怎么写你也怎么写