2012-07-19 21 views
5

यह मेरा html कोडइनलाइन जावास्क्रिप्ट onclick घटना

<a href="#" onclick="return clickHandler()">Hit</a> 

यह मेरी जावास्क्रिप्ट फ़ाइल

function clickHandler(evt) { 
    var thisLink = (evt)?evt.target:Window.event.srcElement; 
    alert(thisLink.innerHTML); 
    return false; 
} 

है लेकिन जब मैं क्लिक करें हिट लिंक, यह रीडायरेक्ट कर देता है।

उत्तर

8

दोनों एक साथ बहुत-सही उत्तरों की टाई करने के लिए, क्या हुआ आप एक समारोह जहां onclick="return runFunction();"

लिखा है आपको लगता है कि को देखें, तो क्या यह वास्तव में क्या कर रहा है इस तरह जा रहा है inlined है:

var link = document.getElementById("myLink"); 

link.onclick = function() { runFunction(); }; 

समस्या देखें?

मेरा runFunction किसी भी घटना वस्तु को पारित किए बिना बुलाया जा रहा है। ... जिसका अर्थ है कि var thisLink = (evt) ? झूठी वापसी करने जा रहा है, जिसका अर्थ है कि यह पुराने आईई-मोड में चलाने की कोशिश करेगा।

onclick="runFunction" लिखकर, कि यह कहते हुए एक ही है:

link.onclick = runFunction; 

जिसका मतलब है कि जब ऑनक्लिक ईवेंट होता है, runFunction बुलाया जाएगा, और W3C संगत ब्राउज़रों में, यह एक घटना वस्तु भेजा जाएगा।

यही कारण है कि समाधान काम करता है।

इस भ्रम से बचने का सबसे अच्छा तरीका जावास्क्रिप्ट के अंदर से जावास्क्रिप्ट से निपटना है, और एचटीएमएल के अंदर एचटीएमएल के साथ सौदा करने के लिए है, ताकि आपको इस बारे में चिंता न करें कि स्ट्रिंग्स कोड में कैसे अनुवाद करते हैं।

अब, यह सब काम करते हैं, और पुनर्निर्देशन को रोकने के लिए प्राप्त करने के लिए, आप ऐसा करना चाहते हैं:

W3C ब्राउज़रों (जो कि घटना पैरामीटर पारित) के लिए:

function runFunction (evt) { 

    // stops the default-action from happening 
    // means you need to find another way to fire it, if you want to later 
    evt.preventDefault(); 


    // stops higher-up elements from hearing about the event 
    // like if you stop a submit button from "clicking", that doesn't stop the form 
    // from submitting 
    evt.stopPropagation(); 

    //the oldIE versions of both of these are 
    event.cancelBubble = true; 
    event.returnValue = false;  
} 
+0

कोई घटना इसका मतलब है कि कार्य करने के लिए दिया जाता है। Thanx। – Vicky

0

जब मैं क्रोम में अपने कोड खामियों को दूर, मैं कंसोल में त्रुटि के रूप में यह मिल गया: Uncaught TypeError: गुण अपरिभाषित

की 'srcElement' पढ़ा नहीं जा सकता यदि बाहर जबकि प्रसंस्करण, यह कभी नहीं एक हो जाता है जावास्क्रिप्ट बम अपवाद के बाद ऑनक्लिक हैंडलर में क्या है, इस पर ध्यान देने के लिए ब्राउज़र बिल्कुल वापस लौटने का मौका देता है।

चूंकि यह बमबारी हो गया है ... एंकर टैग का डिफ़ॉल्ट व्यवहार, जो आपको कहां जाने के लिए कहता है, जहां आपको जाना है।

फ़ंक्शन की सामग्री को एक कोशिश/पकड़ ब्लॉक में लपेटने का प्रयास करें और देखें कि इस तरह की चीज़ आपको परेशान करती है या नहीं।

7

आप की जरूरत यदि आप डिफॉल्ट को रोकना चाहते हैं तो ईवेंट में पास करने के लिए।

एचटीएमएल:

<a href="#" onclick="runFunction(event)">Hit</a> 

स्क्रिप्ट:

function runFunction (evt) { 
    evt.preventDefault(); 
    evt.stopPropagation(); 
} 
संबंधित मुद्दे