2011-08-20 6 views
5

पर कॉल नहीं किया गया है मेरे पास कुछ जावास्क्रिप्ट है जो विंडो लोड के बाद चलाना है लेकिन किसी कारण से, यह कभी नहीं चलता है।फ़ंक्शन को

function setClasses(){ 
     document.getElementsByClassName("gchoice_35_0")[0].onclick = sedanShow; 
     document.getElementsByClassName("gchoice_22_0")[0].onclick = sedanShow; 
     document.getElementsByClassName("gchoice_34_0")[0].onclick = sedanShow; 

     document.getElementsByClassName("gchoice_34_1")[0].onclick = suvShow; 
     document.getElementsByClassName("gchoice_35_1")[0].onclick = suvShow; 
     document.getElementsByClassName("gchoice_22_1")[0].onclick = suvShow; 

     document.getElementsByClassName("gchoice_22_2")[0].onclick = vanShow; 
     document.getElementsByClassName("gchoice_35_2")[0].onclick = vanShow; 
     document.getElementsByClassName("gchoice_34_2")[0].onclick = vanShow; 
    } 

window.onload = setClasses; 

setClasses() फ़ंक्शन को चलाने के लिए प्रतीत नहीं होता:

यहाँ मेरी कोड है। हालांकि यह मैन्युअल रूप से फ़ायरबग के कंसोल के माध्यम से इसे कॉल करते समय काम करता है।

कोड मेरे वेब पेज के शीर्षलेख में रखा गया है।

किसी भी मदद की सराहना की जाती है।

पूर्ण HTML स्निपेट:

<head> 
...... 

<script type="text/javascript"> 
function setClasses(){ 
     document.getElementsByClassName("gchoice_35_0")[0].onclick = sedanShow; 
     document.getElementsByClassName("gchoice_22_0")[0].onclick = sedanShow; 
     document.getElementsByClassName("gchoice_34_0")[0].onclick = sedanShow; 

     document.getElementsByClassName("gchoice_34_1")[0].onclick = suvShow; 
     document.getElementsByClassName("gchoice_35_1")[0].onclick = suvShow; 
     document.getElementsByClassName("gchoice_22_1")[0].onclick = suvShow; 

     document.getElementsByClassName("gchoice_22_2")[0].onclick = vanShow; 
     document.getElementsByClassName("gchoice_35_2")[0].onclick = vanShow; 
     document.getElementsByClassName("gchoice_34_2")[0].onclick = vanShow; 
    } 

    function sedanShow(){ 
      document.getElementById("sedan").style.display="inline" 
      document.getElementById("suv").style.display="none" 
      document.getElementById("van").style.display="none" 
     } 
     function suvShow(){ 
      document.getElementById("sedan").style.display="none" 
      document.getElementById("suv").style.display="inline" 
      document.getElementById("van").style.display="none" 
     } 
     function vanShow(){ 
      document.getElementById("sedan").style.display="none" 
      document.getElementById("suv").style.display="none" 
      document.getElementById("van").style.display="inline" 
     } 
    window.onload = setClasses; 
    </script> 

......

+3

जहां इस कोड अपने पृष्ठ पर दिखाई देता है? क्या आप एक पूर्ण HTML स्निपेट पोस्ट करना चाहते हैं जो काम नहीं करता है? –

+3

मेरा मानना ​​है कि सेट क्लास चल रहा है, यह समस्या नहीं है। मैं शर्त लगाता हूं कि अगर आप अपने सेट क्लास फ़ंक्शन में अलर्ट डालते हैं, तो यह आग लग जाएगा। मेरा मानना ​​है कि यह संभवतः आपकी ऑनक्लिक संपत्ति को कैसे सेट करता है। आईई को इसे एक स्ट्रिंग के रूप में सेट करने की आवश्यकता होती है, जबकि फ़ायरफ़ॉक्स को इसे फ़ंक्शन होने की आवश्यकता होती है। JQuery और YUI ईवेंट उपयोगिताओं की पेशकश करके इसे कम करने में मदद करते हैं। मैं इन ढांचे को देखने की अनुशंसा करता हूं क्योंकि वे आपके साथ निपटने के लिए बहुत सारे क्रॉस ब्राउज़र क्विर्क को कम करने में मदद करते हैं। – Zoidberg

+0

क्या कोई अन्य सेटिंग विंडो है। इस कोड को ओवरराइड करना बंद करें? – epascarello

उत्तर

2

तुम हमेशा JQuery

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 

<script type="text/javascript"> 
     $(document).ready(function() { 
      setClasses(); 
     }); 
</script> 

संपादित

उदाहरण JQuery घटना Refactor इस्तेमाल कर सकते हैं:

$(".gchoice_35_0").click(function(){ 
    //Handler Code... 
}); 
+0

नाइस के माध्यम से कॉल करने के बाद ऐसा लगता है नाइस, JQuery भी एक बहुत अच्छा समाधान है, क्या आप सेटक्लास विधि में Jquery ईवेंट हैंडलिंग दिखाकर अपने उत्तर पर विस्तार कर सकते हैं? मुझे लगता है कि आपके उत्तर में कुछ मूल्य जोड़ देगा। – Zoidberg

+0

एक उत्कृष्ट एपीआई संदर्भ: http://api.jquery.com/click/ –

1

मैं एक जवाब YUI का उपयोग करता है, इसका इस्तेमाल करने या नहीं करने के लिए स्वतंत्र महसूस देने जा रहा हूँ, लेकिन मुझे लगता है कि व्यवस्थाएं हैं जावास्क्रिप्ट विकास को तेज करने में मदद करने के लिए एक अच्छा विचार है। तो, में निम्नलिखित अपने पृष्ठ के लिए

<script type="text/javascript" src="http://yui.yahooapis.com/2.9.0/build/yahoo-dom-event/yahoo-dom-event.js"></script> 

फिर window.onload = someFn की (क्योंकि यह IE, आश्चर्य आश्चर्य में विचित्र हो सकता है) निम्नलिखित

YAHOO.util.Event.onDOMReady(function() { 
    setClasses(); 
}); 

तब में जोड़ने के बजाय, कर अपने कक्षाओं को सेट करें, निम्नलिखित

function setClasses(){ 
     YAHOO.util.Event.on(document.getElementsByClassName("gchoice_35_0")[0], 'click', sedanShow); 
     YAHOO.util.Event.on(document.getElementsByClassName("gchoice_22_0")[0], 'click', sedanShow); 
     YAHOO.util.Event.on(document.getElementsByClassName("gchoice_34_0")[0], 'click', sedanShow); 

     YAHOO.util.Event.on(document.getElementsByClassName("gchoice_34_1")[0], 'click', suvShow); 
     YAHOO.util.Event.on(document.getElementsByClassName("gchoice_35_1")[0], 'click', suvShow); 
     YAHOO.util.Event.on(document.getElementsByClassName("gchoice_22_1")[0], 'click', suvShow); 

     YAHOO.util.Event.on(document.getElementsByClassName("gchoice_22_2")[0], 'click', vanShow); 
     YAHOO.util.Event.on(document.getElementsByClassName("gchoice_35_2")[0], 'click', vanShow); 
     YAHOO.util.Event.on(document.getElementsByClassName("gchoice_34_2")[0], 'click', vanShow); 
    } 

यह चाल चलाना चाहिए।

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