2012-05-08 15 views
7

मैंने यह छोटा सा पहेली बनाया: http://jsfiddle.net/NZnN2/। जब मैं बटन पर क्लिक करता हूं तो यह चेतावनी क्यों नहीं उठा रहा है?जावास्क्रिप्ट फ़ंक्शन को "fiddle" में नहीं कहा जा रहा है

+1

@Rocket के रूप में बताया, आप बाईं पट्टी में बजाय 'ऑनलोड' के 'कोई चादर' सेट करना होगा । – Imp

+5

मैं खो गया हूँ। इस सवाल को इतनी आक्रामक तरीके से क्यों वोट दिया जा रहा है? यह वास्तव में समस्या के बारे में कुछ और बताकर थोड़ा सुधार किया जा सकता है, लेकिन क्या उसे एक पहेली मिल गई है जो उपयोग में आसान है और समस्या को देख रहा है ...? – Beska

+5

प्रश्न में कोई कोड नहीं है, क्या हो रहा है/नहीं हो रहा है, भयानक शीर्षक। – Interrobang

उत्तर

11

क्योंकि आपका जावास्क्रिप्ट कोड onload हैंडलर में है, जिसका अर्थ है display_message वैश्विक नहीं है, और इसलिए HTML द्वारा उपलब्ध नहीं है।

जब से तुम onLoad चयन किया है, आपकी जावास्क्रिप्ट इस तरह पेज में इंजेक्ट किया जाता:

window.addEvent('load', function() { 
    function display_message(){ 
     alert("woohoo!"); 
    } 
}); 

आप देख सकते हैं, display_message कि अज्ञात फ़ंक्शन के अंदर ही उपलब्ध है। उदाहरण कार्य करने के लिए, onLoad से no wrap (head) या no wrap (body) (पृष्ठ के बाईं ओर) बदलें।

कार्य उदाहरण: http://jsfiddle.net/NZnN2/8/

+3

दूसरे शब्दों में: यह एक दायरा मुद्दा –

+2

है ... और इसलिए, आपको तरफ ड्रॉपडाउन बदलने की जरूरत है। – SLaks

3
बजाय

function display_message() { 
    alert('woohoo!'); 
} 

कर

display_message = function() { 
    alert('woohoo!'); 
} 
+0

आप किस ब्राउज़र का उपयोग करते हैं? (गूगल क्रोम पर, यह काम कर रहा है) – Keil

+0

@ बेनीका: वास्तव में नहीं। यह परिवर्तनीय वैश्विक बना देगा, और इसलिए इनलाइन हैंडलर तक पहुंच योग्य होगा। –

+0

@ बेनिका: बिल्कुल नहीं। 'Display_message =' के सामने 'var' के बिना, यह इसे एक वैश्विक चर बना देगा। –

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