कोई भी जेएस कोड जो डीओएम तत्वों को निष्पादित और डीओएम तत्वों के साथ सौदा करता है, डीओएम तत्वों के निर्माण के बाद निष्पादित होना चाहिए। एचटीएमएल में डाले गए जेएस कोड को ऊपर से नीचे तक व्याख्या किया गया है। इसलिए, यदि DOM तत्वों से पहले कोई टैग है, तो स्क्रिप्ट टैग के भीतर जेएस कोड निष्पादित होगा क्योंकि ब्राउज़र HTML पृष्ठ को पार करता है।
तो, अपने मामले में, आप अपने डीओएम इंटरैक्टिंग कोड को फ़ंक्शन के अंदर डाल सकते हैं ताकि केवल फ़ंक्शन को परिभाषित किया जा सके लेकिन निष्पादित नहीं किया जा सके।
फिर आप फ़ंक्शन निष्पादित करने के लिए दस्तावेज़ लोड के लिए इवेंट श्रोता जोड़ सकते हैं।
है कि आप की तरह कुछ दे देंगे:
<script>
function init() {
var myButton = document.getElementById("myButton");
var myTextfield = document.getElementById("myTextfield");
myButton.onclick = function() {
var userName = myTextfield.value;
greetUser(userName);
}
}
function greetUser(userName) {
var greeting = "Hello " + userName + "!";
document.getElementsByTagName ("h2")[0].innerHTML = greeting;
}
document.addEventListener('readystatechange', function() {
if (document.readyState === "complete") {
init();
}
});
</script>
<h2>Hello World!</h2>
<p id="myParagraph">This is an example website</p>
<form>
<input type="text" id="myTextfield" placeholder="Type your name" />
<input type="button" id="myButton" value="Go" />
</form>
फिडल पर - http://jsfiddle.net/poonia/qQMEg/4/
स्रोत
2013-01-08 04:20:18
यह आपकी समस्या नहीं है, लेकिन मैं बटन पर 'क्लिक' ईवेंट हैंडलर के बजाय फ़ॉर्म पर 'सबमिट' ईवेंट हैंडलर का उपयोग करने की अनुशंसा करता हूं। फिर अगर कोई भी प्रवेश करता है तो यह काम करेगा। – icktoofay