2010-09-09 10 views
15

में काम नहीं कर रहा है कि क्यों if (element.innerHTML == "") फ़ायरफ़ॉक्सक्यों करता है, तो (element.innerHTML == "") फ़ायरफ़ॉक्स

में काम नहीं है, लेकिन IE में ठीक काम करता है, किसी भी विचार कृपया?

+2

फ़ायरफ़ॉक्स में परीक्षण आउटपुट क्यों न करें और देखें कि इसमें क्या शामिल है? –

+0

@ पेक्का उत्पादन में पहले से ही खाली स्ट्रिंग है !! –

+0

कृपया एचटीएमएल ('तत्व' जिसे आप जांच रहे हैं) की आपूर्ति करें। इस परिदृश्य में कई चीजें गलत हो सकती हैं - यानी आपका 'तत्व' शून्य हो सकता है। – rochal

उत्तर

17

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

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

आप कर सकता है:

var htmlstring = element.innerHTML; 

    // use the native .trim() if it exists 
    // otherwise use a regular expression 
htmlstring = (htmlstring.trim) ? htmlstring.trim() : htmlstring.replace(/^\s+/,''); 

if(htmlstring == '') {... 

या बस मैन्युअल रूप से अपने HTML मार्कअप में खाली स्थान के से छुटकारा पाने के।

+0

@ पैट्रिक dw: thnx आपके उत्तर और उपयोगी जानकारी के लिए। , क्या आपको इस स्थिति को फ़ायरफ़ॉक्स में कैसे काम करना है, इस बारे में कोई जानकारी है ?? –

+1

@mahmoud, उद्घाटन टैग के> को बंद टैग के <स्पर्श करें < – Benjol

+1

@mahmoud - '.trim()' का समर्थन करने वाले ब्राउज़र के लिए, आप परीक्षण करने से पहले व्हाइटस्पेस को ट्रिम कर सकते हैं। सभी ब्राउज़र '.trim()' हालांकि समर्थन नहीं करते हैं। मैं एक मिनट में अपडेट करूंगा। – user113716

5

आप सर्वोत्तम परिणामों के लिए element.innerHTML.trim() == "" देख सकते हैं या नहीं।

if (!String.prototype.trim) { 
    String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); }; 
} 

if (element.innerHTML.trim() == "") { 
    //do something 
} 
+1

यह '.trim()' का समर्थन करने वाले ब्राउज़र में किसी भी मूल कार्यान्वयन को ओवरराइट करेगा। आपको वास्तव में पहले इसके लिए परीक्षण करना चाहिए। – user113716

+0

@patrick धन्यवाद, तय (मुझे उम्मीद है) – naivists

+0

हाँ, मुझे लगता है कि इसमें इसे शामिल किया जाएगा। : ओ) – user113716

3

एक वैकल्पिक पद्धति रिक्त स्ट्रिंग के लिए जाँच करने के लिए है लंबाई की जांच करने के लिए: हालांकि, तो आप एक trim() विधि के साथ स्ट्रिंग प्रोटोटाइप का विस्तार करने के लिए है

element.innerHTML.length == 0 

लेकिन, आप अभी भी था यदि आपके पास एक व्हाइटस्पेस स्ट्रिंग है जिसे आप मिलान करना चाहते हैं तो trim() पर होना चाहिए।

1

मेरे लिए, यह स्थापित करने के लिए मेरे innerHTMLFirefox और न ही Chrome में काम कर रहा था तरह लग रहा था लेकिन यह मेरी त्रुटि के कारण IE में काम किया है। यह पता चला कि मुझे पहले स्थान पर getElementById का उपयोग करके तत्व कभी नहीं मिला था। IEname=getElementById के साथ और Firefox और Chrome अधिक कठोर था और केवल id= तत्वों को स्वीकार करता है, जो तत्वों के साथ ठीक है। (मेरे दृश्य में अधिक सही ढंग से) मुझे उम्मीद है कि यह किसी को कुछ निराशा बचाता है।
आईई इस तरह की चीजें क्यों करता है और लोगों को भ्रमित करता है ...

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