2010-07-28 13 views
9

मैं एक जावास्क्रिप्ट समारोह onclick कॉल करने के लिए कोशिश कर रहा हूँ के लिए document.getElementById (someid) .onclick उपयोग कर सकते हैं। मैं इसमैं टैग एक

<script type="text/javascript"> 
    function readPage(){ 
     alert("Hello"); 
    } 

    document.getElementById('read').onclick=readPage; 
</script> 

<a id="read" href="">read</a> 

मैं readPage समारोह कॉल करने के लिए कोशिश कर रहा हूँ, लेकिन इसके काम नहीं कर रहा तरह कुछ लिखा है? अगर मैं onclick अंदर टैग यह काम करता है लेकिन जिस तरह से लिखना मैंने ऊपर लिखा है काम नहीं कर रहा। क्यूं कर?

उत्तर

13

के बारे में तुम कैसे करते हैं, लेकिन जब कुछ गलत नहीं है। लोड होने से पहले आप DOM (like running getElementById()) तक नहीं पहुंच सकते हैं। ऐसा करने के लिए सबसे आसान काम window.onload इस तरह के अंदर आप कोड को चलाने के लिए है:

window.onload = function() { 
    document.getElementById("read").onclick=readPage; 
}; 
+0

का उपयोग करके अपने वर्तमान पृष्ठ में शामिल करें धन्यवाद Bjarne Mogstad इसके कामकाजी :) – Vipul

0

आप पहली बार

  1. लंगर पर href="#" बनाओ लंगर के डिफ़ॉल्ट दिशा प्रोटोकॉल (जैसे कि, href करने के लिए एक जाने नहीं) को निष्क्रिय करने के लिए होगा।
  2. event.preventDefault() समारोह उदाहरण here की जाँच करें।
0

आप होना चाहिए:

<script type="text/javascript"> 
    function readPage(){ 
     alert("Hello"); 
    } 

    document.getElementById('read').onclick=readPage; 
</script> 

<a id="read" href="#">read</a> 
+0

नहीं अपने काम नहीं कर रहा है, मैं कुछ अन्य .js फ़ाइल में जावास्क्रिप्ट समारोह में लिखा है। – Vipul

+0

@Vipul: सुनिश्चित करें कि आप उस फ़ाइल को '' टैग – Sarfraz

2

यह एक खाली href विशेषता (पृष्ठ के वर्तमान URL का उपयोग किया जाएगा), के साथ काम करेंगे, लेकिन आप का उपयोग करने के लिए है, पहले ही उल्लेख के रूप में, window.onload क्लिक हैंडलर संलग्न करने के लिए, या आपa तत्व के बाद script ब्लॉक बढ़ना है।

अन्यथा getElementById तत्व क्योंकि यह अभी तक डोम पेड़ में मौजूद नहीं है नहीं मिल रहा।

<a id="read" href="">read</a> 

<script type="text/javascript"> 
    function readPage(){ 
     alert("Hello"); 
     return false; 
    } 

    document.getElementById('read').onclick=readPage; 
</script> 

जैसा कि पहले से ही उल्लेख किया गया है, आप उदाहरण का उपयोग करते हैं। ब्राउज़र बनाने के लिए यूआरएल का पालन करें। यदि आप URL को href="#" पर बदलते हैं तो आपको इसकी भी आवश्यकता है क्योंकि अन्यथा ब्राउज़र पृष्ठ को शीर्ष पर स्क्रॉल करेगा।

टेस्ट यह अपने आप: http://jsfiddle.net/Nj4Dh/1/


traditional event registration model बारे में अधिक पढ़ें।

0

वहाँ यह वास्तव में क्या करने के लिए (किसी भी ब्राउज़र विशिष्ट कार्यों के बिना) दो तरीके हैं। एक

<script type="text/javascript"> 

    function stopDefault(e) //cross browser function for stopping default actionw 
    { 
     if (e && e.preventDefault) 
     { 
      e.preventDefault(); 
     } 
     else 
     { 
      window.event.returnValue = true; 
     } 
     return false; 
    } 

    function readPage(event){ 
     alert("Hello"); 

     return stopDefault(event);//prevent default action 
    } 



    window.onload = function(event){ 

     document.getElementById('read').onclick=readPage; 


    } 
</script> 

<a id="read" href="#">read</a> 

या है:

<script type="text/javascript"> 
    function stopDefault(e) 
    { 
     if (e && e.preventDefault) 
     { 
      e.preventDefault(); 
     } 
     else 
     { 
      window.event.returnValue = true; 
     } 
     return false; 
    } 

    function readPage(event){ 
     alert("Hello"); 

     return stopDefault(event);//prevent default action 
    } 

</script> 
<a id="read" href="#" onclick="readPage(event)">read</a> 

मैं stopDefault समारोह एसडी आप किसी लिंक के डिफ़ॉल्ट कार्रवाई रोकने की आवश्यकता का उपयोग किया है, अन्यथा यह href में यूआरएल thats करने के लिए जाने की कोशिश करेंगे ।

+0

@ फ़ेलिक्स क्लिंग ओप्स मैंने उस बिट को गलत जगह पर चिपकाया, धन्यवाद। अपडेट किया गया। –

+0

ओह ठीक है :) मेरी टिप्पणी हटा दी गई है;) –

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