2017-03-01 227 views
2

我创建了一个脚本,其中将根据选项的选择创建输入栏和按钮。现在我想单击按钮来执行一个功能。下面是我的代码:点击功能动态创建按钮

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<select id="abc"> 
    <option value="1">a</option> 
    <option value="2">b</option> 
    <option value="3">c</option> 
</select> 
<div id="sd"> </div> 

功能

$(document).ready(function() { 
    i=0; 
    $("#abc").on('change',function() { 
    var maindiv= document.createElement('div'); 
     maindiv.setAttribute("id","TextBoxesGroup"); 
     var secdiv=document.createElement('div'); 
     secdiv.setAttribute("id","TextBoxDiv1") 
     maindiv.appendChild(secdiv); 
     var ipt=document.createElement("input"); 
     ipt.setAttribute("type","text"); 
     ipt.setAttribute("id","textbox1"); 
     secdiv.appendChild(ipt); 
     var ad=document.createElement("input"); 
     ad.value= "+"; 
     ad.type="button"; 
     ad.style.width="30px"; 
     ad.setAttribute("id","addButton"+i); 
     ad.onclick=fu_a(this.id); 
     secdiv.appendChild(ad);  
     var division= document.getElementById("sd"); 
     division.appendChild(maindiv); 
     i++; 
    }); 
});  

function fu_a(id){ 
    alert(id); 
} 

这里后点击按钮的功能应该得到执行。但实际上它是在更改选项时执行的。这里是我的小提琴:

https://jsfiddle.net/Safoora/ssvjjg6e/16/

+2

'ad.onclick = fu_a(this.id);'应该是'广告.onclick = fu_a.bind(this.id);' – Rajesh

+0

另一个:http://stackoverflow.com/questions/29526556/javascript-onclick-function-is-called-immediately-not-when-clicked – Rajesh

+0

@Satpal谢谢。人们通常不会用upvotes删除答案。感谢您以身作则。 – Rajesh

回答

0

只是用这个

广告你的动态创建按钮

ad.addEventListener("click", function(){ 
    alert("button clicked"); 
}); 
+0

虽然我会建议相同的,但这并不能解释为什么它立即打电话。当你发现一个明显的问题时,它已经很有可能已经得到了答案。最好的方法是现在找到这样的帖子并分享他们的链接。后来当你有​​足够的代表时,你可以将它们标记为重复 – Rajesh

+0

是的,但不能用这种代表真正做到这一点,我也是新的SO –

+0

是的,我知道。这就是为什么我说*找到这样的职位,并**现在*分享他们的链接。 – Rajesh