HTML / DOM के साथ ईवेंट्स को हैंडल करने के कुछ तरीके हैं। कोई वास्तविक सही या गलत तरीका नहीं है, लेकिन अलग-अलग तरीके अलग-अलग स्थितियों में उपयोगी होते हैं।
1: इसे HTML में परिभाषित करना है:
<input id="clickMe" type="button" value="clickme" onclick="doFunction();" />
2: जावास्क्रिप्ट में ईवेंट के लिए इसे DOM प्रॉपर्टी में शामिल करना है:
//- Using a function pointer:
document.getElementById("clickMe").onclick = doFunction;
//- Using an anonymous function:
document.getElementById("clickMe").onclick = function () { alert('hello!'); };
3: और जावास्क्रिप्ट का उपयोग करके ईवेंट हैंडलर को एक फ़ंक्शन संलग्न करना है:
var el = document.getElementById("clickMe");
if (el.addEventListener)
el.addEventListener("click", doFunction, false);
else if (el.attachEvent)
el.attachEvent('onclick', doFunction);
दूसरे और तीसरे तरीके दोनों इनलाइन / अनाम कार्यों के लिए अनुमति देते हैं और दोनों को दस्तावेज़ से तत्व के पार्स होने के बाद घोषित किया जाना चाहिए। पहला तरीका वैध XHTML नहीं है क्योंकि XHTML विनिर्देश में onclick विशेषता नहीं है।
पहली और दूसरी विधियाँ पारस्परिक रूप से अनन्य हैं, जिसका अर्थ है कि एक (2) का उपयोग दूसरे (1) को ओवरराइड करेगा। तीसरी विधि आपको एक ही ईवेंट हैंडलर के लिए जितने चाहें उतने फ़ंक्शन संलग्न करने की अनुमति देगा, भले ही पहली या दूसरी विधि का भी उपयोग किया गया हो।
सबसे अधिक संभावना है, समस्या आपके CapacityChart()कार्य में कहीं निहित है । आपके लिंक पर जाने और अपनी स्क्रिप्ट चलाने के बाद, CapacityChart () फ़ंक्शन चलता है और दो पॉपअप खोले जाते हैं (एक स्क्रिप्ट के अनुसार बंद है)। जहां आपके पास निम्नलिखित पंक्ति है:
CapacityWindow.document.write(s);
इसके बजाय निम्नलिखित प्रयास करें:
CapacityWindow.document.open("text/html");
CapacityWindow.document.write(s);
CapacityWindow.document.close();
संपादित करें
जब मैंने आपका कोड देखा तो मुझे लगा कि आप इसे विशेष रूप से IE के लिए लिख रहे हैं। दूसरों के रूप में उल्लेख किया है आप के संदर्भ प्रतिस्थापित करने की आवश्यकता होगी document.allके साथ document.getElementById। हालाँकि, इसके बाद भी आपके पास स्क्रिप्ट को ठीक करने का कार्य होगा, इसलिए मैं इसे कम से कम IE में काम करने की सलाह दूंगा क्योंकि क्रॉस ब्राउज़र को काम करने के लिए आप कोड बदलने के लिए जो भी गलती करते हैं वह और भी अधिक भ्रम पैदा कर सकता है। एक बार IE में काम करने के बाद यह बताना आसान होगा कि क्या आप अन्य ब्राउज़र में काम कर रहे हैं जबकि आप कोड को अपडेट कर रहे हैं।