2017-03-01 242 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