2011-06-29 5 views
8

मुझे एक छोटी जावास्क्रिप्ट समस्या मिली है। कोड ओपेरा और फ़ायरफ़ॉक्स ब्राउज़र में काम कर रहा है लेकिन इंटरनेट एक्सप्लोरर 8 में नहीं। क्या किसी को पता है क्यों?जावास्क्रिप्ट - अमान्य तर्क IE8

function createbtn(object, inner) { 
    var hover = document.createElement("div"); 
    hover.setAttribute("class", "myarea"); 
    if (inner) { 
     hover.style.width = object.width - 16 + "px"; 
     hover.style.height = object.height - 16 + "px"; 
     hover.style.top = getposy(object) + "px"; 
     hover.style.left = getposx(object) + "px"; 
    } else { 
     hover.style.width = object.width + "px"; 
     hover.style.height = object.height + "px"; 
     hover.style.top = getposy(object) - 8 + "px"; 
     hover.style.left = getposx(object) - 8 + "px"; 
    } 
} 

मैं सिर्फ जावास्क्रिप्ट सीख रहा हूं। कोई प्रतिक्रिया स्वागत है। साइमन

+0

'getposx' और' getposy' क्या है? – Neal

+0

क्या आप http://jsfiddle.net डेमो में अपना पूरा कोड डाल सकते हैं? – Neal

+0

यदि आप डेवलपर टूल (एफ 12) का उपयोग करते हैं, तो आप जांच सकते हैं कि आईई 8 में कौन सा प्रतिपादन मोड है। क्या आप इसे पोस्ट कर सकते हैं? मुझे संदेह है कि यह क्विर्क मोड में है। –

उत्तर

2

मुझे लगता है कि इसे hover.setAttribute("class", "myarea"); के साथ करना है। यदि आईई 8 आईई 7 या निचले मोड में चल रहा है तो यह काम नहीं करेगा। फिर आपको hover.className = 'myarea' (सभी ब्राउज़रों द्वारा समर्थित) का उपयोग करना होगा।

sAttrName पैरामीटर को वांछित सामग्री विशेषता का नाम चाहिए और दस्तावेज़ ऑब्जेक्ट मॉडल (डीओएम) विशेषता नहीं है। उदाहरण के लिए, IE8 मोड में, इस विधि को क्लासनाम को सेट करने, प्राप्त करने या निकालने के दौरान "क्लासनाम" होने की आवश्यकता नहीं है। संगतता मोड में इंटरनेट एक्सप्लोरर और इंटरनेट एक्सप्लोरर 8 के पहले संस्करणों को अभी भी संबंधित DOM प्रॉपर्टी नाम निर्दिष्ट करने के लिए SAttrName की आवश्यकता है।

http://msdn.microsoft.com/en-us/library/ms536739%28v=vs.85%29.aspx

मोड आईई चल रहा है की जाँच करें।

+0

एएके, मुझे इसे हराया। –

9

तो object.width कम से कम 16

hover.style.width = object.width - 16 + "px"; 

तो इस मोर्चे पर एक नकारात्मक चिह्न है, जो गैर कानूनी है के बाद से चौड़ाई गैर नकारात्मक रहना होगा साथ एक स्ट्रिंग देगा।

आप

hover.style.width = Math.max(object.width - 16, 0) + "px"; 

और इसी तरह ऊंचाई के लिए कह कर इसे ठीक कर सकते हैं।

कई ब्राउज़र अमान्य सामग्री को अनदेखा करते हैं, लेकिन कुछ मोड में आईई कठोर है, इसलिए आप शायद दूसरों में चुप विफलता प्राप्त कर रहे हैं।

+0

मैं IE8 ब्राउज़र मोड ** मानक ** का उपयोग कर रहा हूं। मैंने नकारात्मक चौड़ाई/ऊंचाई की समस्या तय की लेकिन स्थिति सेटिंग काम नहीं कर रही है। कोड यहां है: http://jsfiddle.net/AT825/ इसके साथ क्या गलत है? अब तक सभी महान प्रतिक्रियाओं के लिए धन्यवाद। – Simon

+0

क्या आप सुनिश्चित हैं कि 'गेटोज़ी' और 'गेटोपेक्स' नाएन वापस नहीं आ रहे हैं? –

+0

मुझे यकीन नहीं है। 'Hover.style.top = getposy (ऑब्जेक्ट) +" px '" के लिए; आईई 8 डीबगर सिर्फ एक _Invalid Argument_ – Simon