2009-06-19 10 views
23

मेरा लक्ष्य एक लिंक के "ऑनक्लिक" विशेषता को बदलना है। मैं इसे सफलतापूर्वक कर सकता हूं, लेकिन परिणामी लिंक IE8 में काम नहीं करता है। यह एफएफ 3 में काम करता है।यानी 8 में मूल्य युक्त फ़ंक्शन के साथ ऑनक्लिक विशेषता को कैसे सेट करें?

उदाहरण के लिए, यह फ़ायरफ़ॉक्स 3 में काम करता है, लेकिन IE8 नहीं। क्यूं कर???

<p><a id="bar" href="#" onclick="temp()">click me</a></p> 

    <script> 

    doit = function(){ 
     alert('hello world!'); 
    } 
    foo = document.getElementById("bar"); 
    foo.setAttribute("onclick","javascript:doit();"); 

    </script> 
+3

क्या लाइन है "जावास्क्रिप्ट: चेतावनी ('हैलो दुनिया');" बारे में सबकुछ? – Hugoware

+0

स्क्रिप्ट टैग की "प्रकार" विशेषता को परिभाषित करने में कोई विचार नहीं है और क्लास घोषणा के रूप में जावास्क्रिप्ट का उपयोग करें या ऐसा कुछ? – backslash17

+0

मुझे इसे ठीक करने दें ... – edt

उत्तर

50

आप उस के लिए setAttribute उपयोग करने के लिए की जरूरत नहीं है होना चाहिए - इस कोड काम करता है (IE8 भी)

<div id="something" >Hello</div> 
<script type="text/javascript" > 
    (function() { 
     document.getElementById("something").onclick = function() { 
      alert('hello'); 
     }; 
    })(); 
</script> 
+2

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

+0

अलर्ट ('हैलो वर्ल्ड') के लिए एक अलग फ़ंक्शन क्यों लिखें? :) - यह इस बात पर निर्भर करता है कि आप क्या कर रहे हैं, अगर आप इसे अन्य स्थानों से कॉल करने की योजना नहीं बनाते हैं तो एक बंद बेहतर आईएमओ होगा। उस मामले में – Hugoware

+5

, फ़ंक्शन या बंद करने की कोई आवश्यकता नहीं है। बस document.getElementById ("कुछ")। onclick = function() {चेतावनी ('हैलो'); }; इसके बाकी हिस्सों में से –

7

आपका सर्वश्रेष्ठ दांव jQuery या प्रोटोटाइप है, लेकिन यह है कि नाकाम रहने की तरह एक जावास्क्रिप्ट ढांचे का उपयोग करने के लिए है, तो आप का उपयोग करना चाहिए:

if (foo.addEventListener) 
    foo.addEventListener('click',doit,false); //everything else  
else if (foo.attachEvent) 
    foo.attachEvent('onclick',doit); //IE only 

संपादित करें:

भी

, अपने कार्य एक छोटे से है बंद। यह

var doit = function(){ 
    alert('hello world!'); 
} 
+0

यह काम करता है, लेकिन मैं एक ऑनक्लिक ईवेंट को ओवरराइड करने का प्रयास कर रहा हूं जहां ऑनक्लिक विशेषता और मान एंकर टैग में जोड़ा जाता है। मुझे एंकर टैग बदलने की सुविधा नहीं है, इसलिए मुझे जावास्क्रिप के साथ ऐसा करने की ज़रूरत है। – edt

+1

addEventListener और attachEvent DOM तत्वों (एंकर टैग सहित) में ईवेंट जोड़ने का बहुत बेहतर तरीका है। वे तत्वों के लिए मनमानी संख्याओं को जोड़ने के लिए अविभाज्य तरीके हैं, विपरीत संपत्ति, विपरीत रूप से, केवल एक घटना की अनुमति देती है और कहीं अधिक त्रुटि प्रवण होती है (उदाहरण के लिए संपत्ति को बदलने वाली अन्य स्क्रिप्ट) –

5

आप भी इस तरह अपने समारोह कॉल करने के लिए onclick सेट कर सकते हैं:

foo.onclick = function() { callYourJSFunction(arg1, arg2); }; 

इस तरह, आप भी तर्क पारित कर सकते हैं। .....

1

तुम भी उपयोग कर सकते हैं:

element.addEventListener("click", function(){ 
    // call execute function here... 
}, false);