2009-07-17 21 views
18
document.click = check; 

function check(e) 
{ 
    var obj = document.getElementById('calendar_widget'); 

    if (obj != 'null') 
    { 
     if (e.target.id != 'show_calender') 
      obj.style.display='none'; 
    } 
} 

त्रुटि इंटरनेट एक्सप्लोरर में है: e.target.id अपरिभाषित है।आईई e.target.id काम नहीं कर रहा है

+0

पोस्ट करने से पहले अपनी पोस्ट को जांचना वाकई मुश्किल है? इस बार मैंने आपके लिए कोड तय किया, कम से कम थोड़ा सा। आप चाहते हैं कि दूसरों को अपना कोड देखने के लिए समय लगे, इसलिए इसे पढ़ने योग्य बनाने के लिए समय दें। आपके लिए अभी भी कुछ स्वरूपण है। – OregonGhost

+0

मैं कोड को सम्मिलित करने के बारे में नहीं जानता हूं .. मुझे यह जानकारी कहां मिलती है – coderex

+0

जब आप कोड डालते हैं, तो इसे चुनें और "101 010" के साथ बटन दबाएं – Greg

उत्तर

40

आईई लक्ष्य संपत्ति का समर्थन नहीं करता है, वे इसके बजाय srcElement का उपयोग करते हैं।

बदलें:

if (e.target.id != 'show_calender') 

रहे हैं:

if (!e) e = window.event 

आपकी अंतिम कोड इस तरह दिखेगा:

if ((e.target || e.srcElement).id != 'show_calender') 

आप भी अपने समारोह की शुरुआत में जोड़ने के लिए आवश्यकता हो सकती है :

function check(e) { 
    if (!e) e = window.event; 
    var obj = document.getElementById('calendar_widget'); 

    if (obj != 'null') { 
     if ((e.target || e.srcElement).id != 'show_calender') 
       obj.style.display='none'; 
    } 
} 
+1

यदि आईई 'लक्ष्य' प्रॉपर्टी का समर्थन नहीं करता है, तो जैसे ही आईई इसे हिट करता है, तो आपका कोड' e.target.id' एक शून्य संदर्भ त्रुटि होने जा रहा है। –

+0

मुझे लगता है कि '(e.target.id || e.srcElement.id) 'अभी भी आईई में एक त्रुटि फेंक देगा, क्योंकि यह' लक्ष्य' संपत्ति की' आईडी' संपत्ति तक पहुंचने का प्रयास करेगा, लेकिन 'लक्ष्य' करता है मौजूद नहीं। –

+0

अच्छा पकड़ो। मैंने इस मुद्दे को ठीक कर दिया है। – Prestaul

2

आईई एक ईवेंट ऑब्जेक्ट को पैरामीटर के रूप में पास नहीं करता है, ईवेंट ऑब्जेक्ट को event नामक वैश्विक पहचानकर्ता के रूप में एक्सेस किया जाता है। इसके अलावा यह शब्द लक्ष्य का उपयोग नहीं करता है, इसके बजाय यह srcElement का उपयोग करता है।

इसलिए IE के लिए बराबर कोड है: - इस कारण के लिए

function check() 
{ 

    var obj = document.getElementById('calendar_widget'); 

    if (obj != 'null') 
    { 
     if (event.srcElement.id != 'show_calender') 
      obj.style.display='none'; 
    } 
} 

इसके कि इस तरह JQuery के रूप में जावास्क्रिप्ट चौखटे इतना लोकप्रिय हैं।

+0

धन्यवाद सर, यह काम कर रहा है। :) – coderex

2

आपके पास क्लासिक इवेंट हैंडलिंग क्रॉस-ब्राउज़र समस्या है। मैं Prototype, JQuery, YUI या MooTools जैसी लाइब्रेरी का उपयोग करके सलाह देना चाहूंगा ताकि इसे बहुत आसान और सीधा तरीके से संभाला जा सके। समस्या यह है कि आईई घटना वस्तु को पास नहीं करता है। इसके बजाय इसे वैश्विक वस्तु के रूप में पाया जा सकता है।

5

इंटरनेट एक्सप्लोरर इवेंट ऑब्जेक्ट को इवेंट हैंडलर में पास नहीं करता है - यह इसे विंडो ऑब्जेक्ट की संपत्ति के रूप में सेट करता है। इसके अलावा, यह target के बजाय srcElement का उपयोग करता है।


document.click = check; 

function check(e) 
{ 
    var target = e ? e.target : window.event.srcElement; 
    var obj = document.getElementById('calendar_widget'); 

    if (obj != 'null') 
    { 
     if (target.id != 'show_calender') 
       obj.style.display='none'; 
    } 
} 

+0

इसके अलावा, यह 'document.onclick = ...' है, 'document.click = ...' –

+0

ओह, यह jQuery ... :) –

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