2011-12-23 17 views
15

के अंदर जावास्क्रिप्ट फ़ंक्शन को कॉल करना मेरे पास निम्न है।HTML टैग

<a href="#" onclick="hello()">click me</a> 

और मैं किसी JavaScript फ़ाइल

$(document).ready(function() { 
    function hello() { 
    alert('hi'); 
    } 
}); 

है लेकिन जब मैं पर क्लिक करें "मुझे क्लिक करें", चेतावनी निकाल दिया नहीं जा रहा है। यह कहता है "हैलो" परिभाषित नहीं किया गया है। मैं document.ready हटा देता हूं, और यह काम करता है।

ऐसा इसलिए है क्योंकि पूरे दस्तावेज़ तैयार होने तक "हैलो" परिभाषित नहीं किया जा रहा है, लेकिन जब उपरोक्त "एंकर" टैग प्रस्तुत किया जा रहा है, तो यह फ़ंक्शन नहीं ढूंढ सकता है?

क्या कोई तरीका है कि मैं इसे काम करने के लिए प्राप्त कर सकता हूं?

  • मैं बदसूरत के माध्यम से "onclick"
  • मैं document.ready अंदर मेरे जे एस रखने की जरूरत है HTML टैग से जावास्क्रिप्ट समारोह कॉल करनी होगी

उत्तर

15

आपका hello() (वहाँ अन्य भागों की आवश्यकता कर रहे हैं) फ़ंक्शन घोषणा वैश्विक दायरे में नहीं है, इसलिए HTML से कॉल जो इसे वैश्विक दायरे में कॉल करने का प्रयास कर रहा है उसे नहीं मिल सकता है।

function hello() { 
    alert('hi'); 
} 

$(document).ready(function() { 
}); 

या वैश्विक क्षेत्र में यह घोषणा करके:

$(document).ready(function() { 
    window.hello = function() { 
    alert('hi'); 
    } 
}); 
2

क्योंकि नमस्ते() केवल मौजूद है कारण हैलो अपरिभाषित है आप या तो इसे वैश्विक क्षेत्र में अपने hello() समारोह को ले जाकर ठीक कर सकते हैं DomReady कॉलबैक के संदर्भ में। आपको वैश्विक संदर्भ में हैलो() को परिभाषित करने की आवश्यकता है।

1
  1. $ (दस्तावेज़) .ready() कॉलबैक से "हैलो()" निकालें।
  2. "क्लिक" ईवेंट कॉलबैक में "हैलो()" पर कॉल करें।
<a href="#" id="say_hello">click me</a> 

<script type="text/javascript"> 
$(document).ready(function() { 
    $('#say_hello').click(function() { 
     hello(); 
    }); 
}); 

function hello() { 
    alert('hi'); 
} 
</script> 
+0

आप पहली बार में इनलाइन जेएस उपयोग नहीं करना चाहिए जगह। उपर्युक्त लोगों ने जो कुछ भी उल्लेख किया है वह सही है। –

+0

-1 कोई स्पष्टीकरण के लिए, केवल कोड। –

+1

धन्यवाद @ हैरीजॉय। अब मुझे पता है। –

16

तुम भी साथ जावास्क्रिप्ट HREF विशेषता का उपयोग कर सकते हैं: लंगर टैग में कीवर्ड एक JavaScript फ़ंक्शन कॉल करने के लिए:

<a href="javascript:hello()">click me</a> 
+2

यह इस समस्या का एक वास्तव में दिलचस्प और रचनात्मक समाधान है। – ChaseMoskal

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