2017-10-04 156 views
-1

如何获得这段JavaScript代码停止迭代的最后数花的删除功能?清单上的JavaScript

<html> 
<head> 
    <meta charset="utf-8"> 
</head> 
<body> 
    <div id="lista"></div> 
</body> 
    <script type="application/javascript"> 
     var dados = ['vassoura','lixo','papel']; 
     function deletar(elemento){ 
      console.log(elemento); 
     } 
     function listar(){ 
      var div = document.getElementById('lista'); 
      for(i in dados){ 
       campo = document.createElement("output"); 
       button = document.createElement("button"); 
       button.addEventListener("click",()=>{ 
        deletar(dados[i]); 
       }); 
       button.innerHTML="deletar"; 
       div.appendChild(campo); 
       div.appendChild(button); 
       console.log(i); 
       campo.value = dados[i]+" "; 
       console.log(dados[i]); 
      } 
     } 
     listar(); 
    </script> 

他经过最后的相应数量的迭代为什么当我按一下按钮迭代已经取得并完成

+3

请只交英格尔问题更换for(i in dados)。或者您的问题发布在https://pt.stackoverflow.com/ –

+0

我投票关闭这个问题题外话,因为https://pt.stackoverflow.com/ – epascarello

+1

真正的问题是一个欺骗的https:/ /stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example – epascarello

回答

0

看起来这里是一个范围变量一个常见的错误。

最简单的方法是使用要么关闭或至少与for(let i in dados)