2010-12-08 11 views
9

नीचे मेरा कोड है और यह काम नहीं करता है। "क्लिक()" का नाम बदलने के बाद "क्लिक 1()" यह काम करता है, क्यों?जावास्क्रिप्ट फ़ंक्शन नाम क्लिक के रूप में सेट नहीं किया जा सकता है?

<html> 
<head> 
    <title></title> 
    <script type="text/javascript"> 
     function click() { 
      document.getElementById("content").innerHTML = "abc"; 
     } 
    </script> 
</head> 

<body> 
    <button onclick="click()">try it</button><br /> 
    <div id="content"></div> 
</body> 
</html> 
+0

मुझे नहीं लगता कि किसी भी उत्तर को पर्याप्त रूप से यहां मुद्दा यह व्याख्या कैसे करते हैं। – Pointy

+0

यह भी ध्यान रखें कि "onclick" को "window.click()" में बदलकर यह – Pointy

+0

काम करता है। मैं एक नौसिखिया हूं। मुझे लगता है कि मुझे w3school में अपनी शिक्षा तेज करना है। यह stackoverflow.com पर मेरी पहली पोस्ट है। मैं बहुत खुश हूं कि यह बहुत सक्रिय और दयालु है। प्वाइंट करने के लिए: मैं और जानने के बाद window.click() का प्रयास करूंगा .. – micahli123

उत्तर

0

क्लिक() जावास्क्रिप्ट के बटन ऑब्जेक्ट का अंतर्निहित है।

1

पहले से ही एक फ़ंक्शन नामक फ़ंक्शन है, जो ईवेंट हैंडलर को कॉल करने के लिए ज़िम्मेदार है। एक और घोषित करके, आप पहले ओवरराइड करते हैं, इसलिए घटना अब और काम नहीं करती है।

+0

यह "क्लिक" फ़ंक्शन कहां है? ब्राउज़र पर 'eval()' को दिए जाने पर "ऑनक्लिक" विशेषता का स्ट्रिंग मान (प्रभावी रूप से) दिया गया है जब यह शब्दावली के दायरे में क्यों है? – Pointy

+0

@ पॉइंटी: यह तत्व का एक कार्य है। – thejh

+0

हाँ धन्यवाद - उत्तर एचटीएमएल 5 spec, और शायद कहीं और पाया जा सकता है।"ऑनक्लिक" विशेषता का पाठ फ़ंक्शन बॉडी के रूप में व्याख्या किया जाता है, लेकिन तत्व के संदर्भ में एक अंतर्निहित 'ब्लॉक' के अतिरिक्त मोड़ के साथ। यदि यह '

' में था, तो उसे भी 'ब्लॉक' के साथ एक अंतर्निहित मिलेगा। – Pointy

-2

क्लिक की विधि के लिए एक आरक्षित नाम पूर्वनिर्धारित घटना है। आपको पूर्वनिर्धारित घटनाओं का उपयोग नहीं करना चाहिए।

12

"ऑनफू" हैंडलर विशेषताओं के स्ट्रिंग मानों को हैंडलर फ़ंक्शंस के निकायों के रूप में व्याख्या किया जाता है। दूसरे शब्दों में, ऐसा लगता है कि विशेषता का स्ट्रिंग मान new Function("event", str) पर हो गया है जिसके परिणामस्वरूप हैंडलर फ़ंक्शन का उपयोग किया जाता है।

इसके अतिरिक्त, समारोह के शाब्दिक गुंजाइश इस प्रकार की स्थापना की, एचटीएमएल 5 कल्पना से लिया (जो मैं ब्राउज़र के व्यवहार के लिए एक व्यापक वर्णन की अपनी क्षमता में केवल परामर्श) है:

शाब्दिक पर्यावरण स्कोप
* स्कोप न्यूऑब्जेक्ट एंटरटेनमेंट (तत्व का दस्तावेज़, वैश्विक पर्यावरण) का नतीजा है।
* यदि तत्व का एक फॉर्म स्वामी है, तो स्कोप न्यूऑब्जेक्ट एंटरप्राइज (तत्व का फॉर्म स्वामी, स्कोप) का परिणाम बनें।
* स्कोप NewObjectEnvironment (तत्व की वस्तु, स्कोप) का परिणाम हो करते हैं।

इस प्रकार ऐसा लगता है कि दो घोंसले with ब्लॉक कोड के चारों ओर फिसल गए हैं। इस प्रकार इस मामले में प्रभाव बुला इस बात का है जो:

var handler = new Function("event", "with (this) { click(); }"); 

वहाँ क्योंकि डोम तत्व <button> करने के लिए इसी पर एक विधि "क्लिक", कि समारोह क्या हैंडलर, नहीं वैश्विक एक द्वारा स्थापित द्वारा कहा जाता है स्क्रिप्ट टैग। यदि "ऑनक्लिक" विशेषता "window.click();" पर सेट है तो पृष्ठ ठीक से काम करता है।

+1

+1, आखिरकार * वास्तविक * उत्तर के लिए ;-) –

-2

आप शायद अपने कोड refactor करने के लिए jQuery का उपयोग कर विचार करना चाहिए:

<html> 
<head> 
    <title></title> 
</head> 

<body> 
    <button id="button1">try it</button><br /> 
    <div id="content"></div> 
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $("#button1").click(function() { 
       $("#content").html("abc"); 
      }); 
     }); 
    </script> 
</body> 
</html> 
+2

आपके ट्यूटोरियल के लिए धन्यवाद। मुझे लगता है कि मुझे jQuery सीखना है क्योंकि मैंने पहले ही कुछ जावास्क्रिप्ट सीखा है। मेरे सर्वर के अलावा Google सर्वर में jQuery फ़ाइल का उपयोग करने में आपके निर्देश के लिए धन्यवाद। – micahli123

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

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