2010-06-26 3 views
5

मैंने कुछ कोड लिखा जो वेबपृष्ठ पर छवियों को संशोधित करता है। फ़ायरफ़ॉक्स और सफारी के साथ काम करता है। लेकिन इंटरनेट एक्सप्लोरर के साथ काम करने की कोशिश करने से मुझे स्टंप हो गया है। एक्सप्लोरर में "parentNode" के बराबर क्या है? या यह कैसे काम करने में चाल करता है?इंटरनेट एक्सप्लोरर में "parentNode" के समतुल्य

images = document.getElementsByTagName('img') 
parms = {}; 

for (a=0;a < images.length;a++){ 
    parent = images[a].parentNode; // <-- What to substitute for explorer? 
    parms[a] = {}; 
    parms[a].bigsrc=parent.getAttribute("href"); 
    parms[a].w_o = images[a].width; 
    parms[a].h_o = images[a].height; 
    parms[a].IsBig = false; 
    parms[a].loaded = false; 
    images[a].border=0; 
    parent.setAttribute("href","javascript:MakeBig('"+a+"')"); 
} 
+2

बस कुछ सामान्य टिप्पणियां: 'छवियों', 'पैरामीटर', 'ए' और 'पैरेंट' स्थानीय रूप से घोषित करने के लिए' var' का उपयोग करें; 'href' सेट करने के लिए 'setAttribute' का उपयोग न करें, इसके बजाय' parent.href' का उपयोग करें (IE freaks out); आप शायद 'वर्म्स' को एक सरणी (सामान्य वस्तु के बजाए) चाहते हैं: 'var parms = [];'; आप शायद 'सीमा' विशेषता के बजाय 'images [a] .style.border =" none "सेट करना चाहते हैं, जो [अप्रचलित] है (http://dev.w3.org/html5/markup/img.html # img.attrs.border)। –

+0

क्या आप कुछ HTML प्रदान कर सकते हैं ताकि हम समस्या को पुन: उत्पन्न कर सकें? –

+0

(फ़ायरफ़ॉक्स में काम करता है लेकिन आईई नहीं) कोड का एक उदाहरण यहां है: http://woodgears.ca/workshop/jacques/min.html यह एक अच्छी छवि ज़ूमिंग प्रभाव है, अगर केवल मैं इसे काम कर सकता हूं एक्सप्लोरर (या ओपेरा, उस मामले के लिए) –

उत्तर

12

समस्या पैरेंट नोड को "पैरेंट" नामक एक var के असाइनमेंट के साथ है। ऐसा लगता है कि आईई में एक आरक्षित शब्द है जो कोड को तोड़ देता है। Var नाम बदलें और इसे काम करना चाहिए।

+1

धन्यवाद। यह तय है। अगर केवल आईई ने मुझे उस प्रभाव के लिए एक उपयोगी त्रुटि संदेश दिया था। –

+7

'पैरेंट' ** ** एक आरक्षित शब्द नहीं है। यदि आपने 'var parent = images [a] .parentNode का उपयोग किया था, तो यह ठीक होगा। 'parent' एक होस्ट ऑब्जेक्ट है जो विंडो ऑब्जेक्ट के पैरेंट फ्रेम का संदर्भ प्रदान करता है और स्पष्ट रूप से (और कानूनी रूप से) IE में सेटटेबल नहीं है, और 'parent = images [a] .parentNode;' इसे सेट करने का प्रयास करता है। –

+0

आह ने मुझे बहुत परेशानी बचाई - धन्यवाद! मुझे लगता है कि उत्तर को आरक्षित शब्द को प्रतिबिंबित करने के लिए संपादित किया जाना चाहिए, हालांकि यह अभी भी मेरे विचार में सही उत्तर है। – LeonardChallis

0

क्या आप पैरेंट नोड को एंकर होने की उम्मीद कर रहे हैं? ऐसा लगता है कि आप छवि को एक लिंक में लपेटने की कोशिश कर रहे हैं। यदि यह सही है, तो विकल्प के रूप में क्या काम कर सकता है, वह छवि पर एक क्लिक जोड़ रहा है, और एक हाथ कर्सर सेट कर रहा है। इससे छवि की उपस्थिति बिना किसी लिंक के हो सकती है, जिसके बारे में आपको ध्यान रखना पड़ता है कि पैरेंट नोड क्या है।

+0

मुझे यकीन नहीं है कि आपका मतलब "एंकर" से क्या है। मैं सिर्फ उस लिंक को बदलने की कोशिश कर रहा हूं जो छवि पर क्लिक होने पर इंगित करता है। –

+0

एंकर एक लिंक बनाने के लिए इस्तेमाल किया जाने वाला टैग है - यही कारण है कि जब आप HTML में एक लिंक बना रहे हैं, तो टैग 'ए' है। तो छवि के चारों ओर एंकर टैग को संशोधित करने के लिए जावास्क्रिप्ट का उपयोग करने की कोशिश करने के बजाय, छवि के अपने ऑनक्लिक को बदले में क्यों न बदलें? दोबारा, यह आपको देखभाल करने से बचने की अनुमति देगा कि पेरेंट नोड –

2

parentNode आईई में ठीक काम करता है (certain cases को छोड़कर, यहां शायद ही अप्रासंगिक है)। त्रुटि आपके कोड में लगभग निश्चित रूप से कहीं और है।

+0

क्या है कि एक्सप्लोरर "parentNode" कथन पर विफल रहता है, इसलिए शेष कोड भी चलाने के लिए नहीं मिलता है। –

+1

खुद को दोहराने के जोखिम पर, ** 'parentNode' समर्थित है और IE ** में सही तरीके से काम करता है। समस्या कहीं और है। यदि आप कुछ HTML प्रदान करते हैं तो हम आपको कहां बता सकते हैं। –

+0

टिम सही है कि समस्या कहीं और है। मेरा नवीनतम उत्तर देखें जहां मुझे लगता है कि यह है। –

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