क्या हो रहा है कि फॉर्म जमा हो रहा है, और इसलिए पृष्ठ को ताज़ा किया जा रहा है (इसकी मूल सामग्री के साथ)। आप संभाल रहे हैंclick ईवेंट को सबमिट बटन पर ।
यदि आप तत्व को हटाना चाहते हैं और फॉर्म जमा नहीं करना चाहते हैं, submitतो इसके बजाय फॉर्म पर ईवेंट को हैंडल करें , और falseअपने हैंडलर से वापस लौटें :
HTML:
<form onsubmit="return removeDummy(); ">
<input type="submit" value="Remove DUMMY"/>
</form>
जावास्क्रिप्ट:
function removeDummy() {
var elem = document.getElementById('dummy');
elem.parentNode.removeChild(elem);
return false;
}
लेकिन आपको इसके लिए एक फॉर्म की आवश्यकता (या नहीं) चाहिए, नहीं तो इसका एकमात्र उद्देश्य डमी डिव को निकालना है। बजाय:
HTML:
<input type="button" value="Remove DUMMY" onclick="removeDummy()" />
जावास्क्रिप्ट:
function removeDummy() {
var elem = document.getElementById('dummy');
elem.parentNode.removeChild(elem);
return false;
}
हालाँकि , इवेंट हैंडलर स्थापित करने की शैली पुराने जमाने की है। आपको लगता है कि आपके जावास्क्रिप्ट कोड की अपनी फ़ाइल और इस तरह में अच्छी वृत्ति है। अगला कदम इसे आगे ले जाना है और onXYZइवेंट हैंडलर को हुक करने के लिए विशेषताओं का उपयोग करने से बचें । इसके बजाय, अपने जावास्क्रिप्ट में, आप उन्हें नए (लगभग वर्ष 2000) तरीके से हुक कर सकते हैं:
HTML:
<input id='btnRemoveDummy' type="button" value="Remove DUMMY"/>
जावास्क्रिप्ट:
function removeDummy() {
var elem = document.getElementById('dummy');
elem.parentNode.removeChild(elem);
return false;
}
function pageInit() {
// Hook up the "remove dummy" button
var btn = document.getElementById('btnRemoveDummy');
if (btn.addEventListener) {
// DOM2 standard
btn.addEventListener('click', removeDummy, false);
}
else if (btn.attachEvent) {
// IE (IE9 finally supports the above, though)
btn.attachEvent('onclick', removeDummy);
}
else {
// Really old or non-standard browser, try DOM0
btn.onclick = removeDummy;
}
}
... फिर अपने पृष्ठ के बहुत अंत में pageInit();एक scriptटैग से कॉल करें body(समापन </body>टैग से पहले ), या window loadघटना के भीतर से , हालांकि यह पृष्ठ लोड चक्र में बहुत देर से होता है और इसलिए आमतौर पर घटना को हुक करने के लिए अच्छा नहीं है। हैंडलर (यह बाद में होता है) सभी छवियों के अंत में लोड , उदाहरण के लिए)।
ध्यान दें कि मुझे ब्राउज़र अंतर से निपटने के लिए कुछ हैंडलिंग में रखना पड़ा है। आप शायद घटनाओं को हुक करने के लिए एक फ़ंक्शन चाहते हैं ताकि आपको हर बार उस तर्क को दोहराना न पड़े। या आपके लिए उन ब्राउज़र अंतरों को सुचारू करने के लिए jQuery , प्रोटोटाइप , YUI , क्लोजर या कई अन्य में से किसी एक पुस्तकालय का उपयोग करने पर विचार करें । यह बहुत महत्वपूर्ण अंतर्निहित सामान जावास्क्रिप्ट बुनियादी बातों और डोम बुनियादी बातों के संदर्भ में, चल रहा दोनों को समझने के लिए, लेकिन पुस्तकालयों विसंगतियों का एक बहुत से निपटने, और भी काम उपयोगिताओं का एक बहुत प्रदान करते हैं - ईवेंट हैंडलर्स कि ऊपर hooking के एक साधन के तरह से संबंधित है ब्राउज़र अंतर। उनमें से अधिकांश एक फ़ंक्शन सेट करने का एक तरीका भी प्रदान करते हैं (जैसेpageInit) जैसे ही window loadआग लगने से बहुत पहले डोम तैयार किया जाता है, चलाने के लिए ।