आइटम के लिए 'इस' संदर्भ यानी में erroring क्लिक किया

वोट
1

नीचे दिए गए कोड के लिए, मैं IE में कुछ मुद्दों पर हो रहा है। दूसरा कार्य करने के लिए पारित किया पैरामीटर आइटम के लिए एक संदर्भ क्लिक किया जाना चाहिए। यह एफएफ और सफारी में ठीक काम करता है, लेकिन जब मैं IE7 में यह परीक्षण किया त्रुटियों यह। आईई तत्व प्राप्त करने के लिए (कंसोल में देखा जाता है) लेकिन जब भी मैं इसके साथ कुछ भी करने की कोशिश मैं त्रुटि मिलती है प्रकट होता है:

ऑब्जेक्ट इस गुण या विधि का समर्थन नहीं करता

सहायता के लिए धन्यवाद।

<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
<html xmlns=http://www.w3.org/1999/xhtml>
<head>
</head>
<body>  
<script type=text/javascript src=https://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js></script>
<script type='text/javascript' src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script>   
<script language=javascript type=text/javascript>   
    var Test = {            
        doIt: function(str, btn) {  
            console.log(str);
            console.log(btn);               
            if (btn.hasClassName('red')) {
                console.log('has red');         
            } else {
                console.log('doesn\'t');
            }           
        }   
    };  
</script>   
<a href=# onClick=Test.doIt('hello', this) class=red>Test</a> 
</body></html>
17/06/2009 को 15:14
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
6

समस्या यह है कि btn स्वचालित रूप से विधि नहीं है hasClassName- कि एक प्रोटोटाइप विस्तार है।

करने के लिए प्रोटोटाइप विस्तार कार्यों के साथ अपने तत्व का विस्तार , के शीर्ष पर इस लाइन को जोड़ने doIt():

btn = $(btn); // Extends element with Prototype functions.

आपका कोड वहाँ से काम करना चाहिए।

17/06/2009 को 15:19
का स्रोत उपयोगकर्ता

वोट
2

इसका कारण यह है जब प्रोटोटाइप का उपयोग कर, तत्वों स्वचालित रूप से IE में पृष्ठ लोड पर प्रोटोटाइप कार्यों के साथ बढ़ाया नहीं कर रहे हैं, वे विशेष रूप से एक के माध्यम से पारित करने के लिए है $()इन तरीकों के साथ तत्वों का विस्तार करने के लिए कॉल। अपने कार्य के शीर्ष करने के लिए इस जोड़े यह IE में काम करने के लिए।

doIt : function(str, btn) {
    btn = $(btn);
}

संपादित करें: आईई 7 (IIRC) की तुलना में और नीचे HTML तत्वों स्वचालित रूप से नमूने की जाएगी अन्य सभी ब्राउज़रों में स्पष्ट करने के लिए, लेकिन IE में <= 7 वे के माध्यम से गुजरना होगा $()इन प्रोटोटाइप लागू करने के लिए कार्य करते हैं।

17/06/2009 को 15:19
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more