2011-08-05 10 views
12

मैं नीचे की तरह html में गतिशील रूप से एक बटन जोड़ने हूँ: उस बटन पर क्लिक करने पर मैं एक जावास्क्रिप्ट समारोह कॉल करना चाहते हैं:।गतिशील रूप से जोड़ा गया बटन पर ऑनक्लिक ईवेंट जोड़ रहा है?

var but = document.createElement("button"); 

but.value="delete row"; 

but.setAttribute("onclick","callJavascriptFunction()"); 
//this is not working 

but.onclick="callJavascriptFunction()" 
//this is also not working 

document.getElementById("but").onclick="callJavascriptFunction()" 
//this is also not working 

but.id="but"+inc; 

इस को हल करने के लिए किसी भी तरीके हैं ?? plz मेरी मदद, धन्यवाद अग्रिम में

उत्तर

19

इस प्रयास करें:

but.onclick = callJavascriptFunction; 

या किसी अन्य तत्व के साथ यह लपेटकर द्वारा बटन बनाने और उपयोग innerHTML:

var span = document.createElement('span'); 
span.innerHTML = '<button id="but' + inc +'" onclick="callJavascriptFunction()" />'; 
+0

यह काम किया .... बहुत बहुत धन्यवाद :) – sanjeev

+0

दोस्त सबकुछ ठीक है .. लेकिन मैं स्ट्रिंग को संयोजित करके आईडी नहीं दे पा रहा हूं: लेकिन और inc ... कृपया मदद करें ...... "लेकिन ' + inc + '"यह काम नहीं कर रहा है – sanjeev

+0

कोशिश करें: span.firstChild.setAttribute (" लेकिन "+ inc); span.innerHTML के बाद, मुझे लगता है कि inc एक चर है, और इसका उपयोग करने से पहले इसे सेट किया जाना चाहिए।मुझे बताएं कि यह अभी भी आपके लिए काम नहीं करता है। – jerjer

10

आपके अभिव्यक्तियों से() को निकालें जो काम नहीं कर रहे हैं वांछित परिणाम आपको प्राप्त होंगे।

but.setAttribute("onclick",callJavascriptFunction); 
but.onclick= callJavascriptFunction; 
document.getElementById("but").onclick=callJavascriptFunction; 
+1

क्यों setAttribute जब आप भी onclick करते हैं? सभी ब्राउज़रों को सिर्फ क्लिक पर समर्थन नहीं है? – TJHeuvel

+0

बस दिखाएं कि काम करने के लिए काम करने वाली लाइनों को कैसे बनाया जा सकता है। –

+0

धन्यवाद, उसने मेरी मदद की! –

1
but.onclick = callJavascriptFunction; 

कोई दोहरे उद्धरण चिह्नों कोई कोष्ठकों।

+0

पर कॉल करने के लिए क्या करें यदि आप तर्क चाहते हैं? – Alex

2

प्रयास करें
but.addEventListener('click', yourFunction) नोट अभाव parantheses () के बाद की कार्य का नाम ऐसा इसलिए है क्योंकि आप फ़ंक्शन को असाइन कर रहे हैं, इसे कॉल नहीं कर रहे हैं।

2

इस प्रयास करें:

var inputTag = document.createElement("div");    
inputTag.innerHTML = "<input type = 'button' value = 'oooh' onClick = 'your_function_name()'>";  
document.body.appendChild(inputTag); 

यह एक DIV जो पूरी तरह से काम करता है के अंदर एक बटन बनाता है!

2

मुझे एक समान समस्या थी लेकिन इनमें से कोई भी फ़िक्स काम नहीं करता था। समस्या यह थी कि मेरा बटन अभी तक पृष्ठ पर नहीं था।

//Bad code. 
var btn = document.createElement('button'); 
btn.onClick = function() { console.log("hey"); } 
इस के लिए

:

//Working Code. I don't like it, but it works. 
var btn = document.createElement('button'); 
var wrapper = document.createElement('div'); 
wrapper.appendChild(btn); 

document.body.appendChild(wrapper); 
var buttons = wrapper.getElementsByTagName("BUTTON"); 
buttons[0].onclick = function(){ console.log("hey"); } 

क्यों यह काम करता है मैं बिल्कुल भी कोई सुराग नहीं है इस के लिए ठीक इस से जा रहा जा रहा समाप्त हो गया। पृष्ठ पर बटन जोड़ना और किसी अन्य तरीके से इसका जिक्र करना काम नहीं किया।

+0

पर पैरा जोड़ने के लिए मैंने बहुत पहले यह जवाब दिया था, और अब इसकी अनुशंसा नहीं करेंगे। इसके बजाय, 'btn.addEventListener (' क्लिक ', फ़ंक्शन (ईवेंट) {do stuff}) का उपयोग करें; ' –

1

यह कोड मेरे लिए अच्छा काम करता है और अधिक सरल दिखता है। विशिष्ट पैरामीटर के साथ एक समारोह को कॉल करने के लिए आवश्यक है।

var btn = document.createElement("BUTTON"); //<button> element 
var t = document.createTextNode("MyButton"); // Create a text node 
btn.appendChild(t); 

btn.onclick = function(){myFunction(myparameter)}; 
document.getElementById("myView").appendChild(btn);//to show on myView 
0

but.onclick = function() { yourjavascriptfunction();};

या

but.onclick = function() { functionwithparam(param);};

+0

> इनलाइन घटनाओं के साथ महत्वपूर्ण दोष यह है कि ऊपर वर्णित ईवेंट श्रोताओं के विपरीत, आपके पास केवल एक इनलाइन ईवेंट असाइन किया जा सकता है। इनलाइन घटनाओं को तत्व [दस्तावेज़] की विशेषता/संपत्ति के रूप में संग्रहीत किया जाता है, जिसका अर्थ है कि इसे ओवरराइट किया जा सकता है। (Https://stackoverflow.com/a/6348597/1872046) –

संबंधित मुद्दे