2016-10-26 7 views
5

मेरे पास एक साधारण HTML लिंक है, जिसमें मैं एक जावास्क्रिप्ट फ़ंक्शन ऑनक्लिक पर कॉल करता हूं और इसमें लगाए गए मान को स्विच करने का प्रयास करता हूं। यह काम नहीं कर रहा है।जावास्क्रिप्ट स्विच केस परिवर्तनीय नहीं ले रहा

function lang(language) { 
 
    switch (language) { 
 
    case "it-IT": 
 
     alert("Italiano selezionato"); 
 
     break; 
 
    case "en-US": 
 
     alert("English selected"); 
 
     break; 
 
    } 
 
}
<p><a href="#" onClick="lang('en-US');">English</a></p> 
 
<p><a href="#" onClick="lang('it-IT');">Italiano</a></p>

+0

क्या कंसोल में कोई त्रुटि है? –

+0

@ लुकासबाइज़र नॉप, कंसोल में कोई त्रुटि नहीं (ड्रीमवेवर का उपयोग करके) – Tony33

उत्तर

12

अपने समारोह नाम के लिए lang का उपयोग न करें, ब्राउज़र यह पहले से ही उपयोग कर रहा है:

यहाँ मेरी कोड है।

function xlang(language) { 
 
    switch (language) { 
 
    case "it-IT": 
 
     alert("Italiano selezionato"); 
 
     break; 
 
    case "en-US": 
 
     alert("English selected"); 
 
     break; 
 
    } 
 
}
<p><a href="#" onClick="xlang('en-US');">English</a></p> 
 
<p><a href="#" onClick="xlang('it-IT');">Italiano</a></p>

+1

क्या उसके लिए लैंग का उपयोग तब तक संभव नहीं है जब तक वह इसे किसी निजी समारोह में लपेटता है? बेशक यह एक बेहतर फिक्स है, लेकिन अगर वह ** वास्तव में ** उस समारोह के नाम का उपयोग करना चाहता था? – Kevin

+1

जैसा कि आपने कहा था, फ़ंक्शन नाम बदलने से समस्या हल हो गई थी। धन्यवाद, मैंने वैश्विक लैंग समारोह के बारे में नहीं सोचा था .. – Tony33

+0

@ केविन यह अच्छा सवाल है – Mahi

2

समस्या यहाँ है। onclick इवेंट हैंडलर के आसपास with का उपयोग किया जाता है, जो आपको सभी वैश्विक विशेषताओं (lang सहित) का उपयोग करने की अनुमति देता है। तो यह वैश्विक lang संपत्ति तक पहुंचने का प्रयास करता है।

तो बदल आप किसी और से नाम से कार्य है, लेकिन कोई attributes नाम

<p><a href="#" onClick="alertLang('en-US');">English</a></p> 
 
<p><a href="#" onClick="alertLang('it-IT');">Italiano</a></p> 
 

 
<script> 
 
    function alertLang(language) { 
 
    switch (language) { 
 
    case "it-IT": 
 
     alert("Italiano selezionato"); 
 
     break; 
 
    case "en-US": 
 
     alert("English selected"); 
 
     break; 
 
    } 
 
} 
 
    </script>

लेकिन अगर आप एक event handler में Javascript

<p><a href="#">English</a></p> 
 

 
<script> 
 
    function lang() { 
 
     alert("English selected"); 
 
    } 
 
    
 
    document.querySelector('p').onclick = lang; 
 
    </script>
के रूप में जोड़ने यह काम करेंगे

+0

वैश्विक लैंग नहीं है। –

0

जब आप onclick हैंडलर को जावास्क्रिप्ट कोड असाइन करते हैं, तो इसे एक विशेष दायरे में निष्पादित किया जाता है जहां तत्व के गुण सीधे उपलब्ध होते हैं जैसे कि यह with (element) { } ब्लॉक के अंदर चल रहा था।

आपके उदाहरण में, lang परिवर्तक तत्व के lang विशेषता के अनुरूप है। अन्य उदाहरण जो एक ही त्रुटि का कारण बनेंगे id, title, style और href शामिल हैं।

function lang() { 
} 

with(element) { 
    lang("en-US"); 
    // type error since lang resolves to element.lang 
    // instead of the outer lang 
} 

आप बस अपनी समारोह नाम स्थान कर सकते हैं::

var MyFancyFunctions { 
    lang: function { 
    } 
}; 
<a onclick="MyFancyFunctions.lang('en-US')">English</a> 

या सिर्फ अस्पष्टता को दूर:

<a onclick="window.lang('en-US')">English</a> 

संदर्भ:

निम्नलिखित कोड को क्रियान्वित करने के रूप में समझें

internal raw uncompiled handler

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