2010-09-13 18 views
5

यह फ़ंक्शन सबमिट पर फ़ॉर्म के दौरान निष्पादित करता है, और फ़ायरफ़ॉक्स और क्रोम में ठीक काम करता है, लेकिन IE में नहीं। मुझे संदेह है कि यह सूचकांक है, लेकिन मुझे इसे काम करने के लिए कोई रास्ता नहीं मिल रहा है।इंटरनेट एक्सप्लोरर में indexOf क्यों काम नहीं कर रहा है?

function checkSuburbMatch(e) { 

var theSuburb = document.getElementById('suburb').value; 
var thePostcode = document.getElementById('postcode').value; 

var arrayNeedle = theSuburb + " (" + thePostcode + ")"; 

if(suburbs.indexOf(arrayNeedle) != -1) { 
    alert("Suburb and Postcode match!"); 
    return false; 
} else { 
    alert("Suburb and Postcode do not match!"); 
    return false; 
} 

} 
+0

परिवर्तनीय "उपनगरों" में क्या होता है? – Tim

+0

यह "उपनगरनाम (पोस्टकोड)" – David

+0

की लाइनों के साथ चलने वाले तारों की एक सरणी है [क्यों सरणी IE8 पर काम नहीं करता है?] (Http://stackoverflow.com/questions/3629183/why-doesnt -indexof-काम-ऑन-एक सरणी-IE8)। यह भी देखें: [आईई ब्राउज़र के लिए जावास्क्रिप्ट में ऐरे इंडेक्सऑफ() को कैसे ठीक करें] (http://stackoverflow.com/questions/1744310/), [इंटरनेट एक्सप्लोरर के लिए कार्यान्वयन के लिए ऐरे इंडेक्स] (http://stackoverflow.com/questions/2868696) – CMS

उत्तर

17

आईई बस Array पर इस विधि नहीं है, आप इसे अपने आप को जोड़ सकते हैं, हालांकि, from MDC:

if (!Array.prototype.indexOf) 
{ 
    Array.prototype.indexOf = function(elt /*, from*/) 
    { 
    var len = this.length >>> 0; 

    var from = Number(arguments[1]) || 0; 
    from = (from < 0) 
     ? Math.ceil(from) 
     : Math.floor(from); 
    if (from < 0) 
     from += len; 

    for (; from < len; from++) 
    { 
     if (from in this && 
      this[from] === elt) 
     return from; 
    } 
    return -1; 
    }; 
} 

यह .indexOf() अगर यह (कमी है कहते हैं इस बात का मतलब है कि आप में रहते हैं तो आईई < 9) तो आप इसका उपयोग कर सकते हैं। क्यों आईई 8 में पहले से ही यह नहीं है? मैं तुम्हें वहाँ मदद कर सकते हैं नहीं ...

+0

यह काम नहीं कर रहा था, और इसे फ़ायरफ़ॉक्स में भी काम करना बंद कर दिया। क्या फ़ंक्शन को कॉल करने के बाद या स्क्रिप्ट की शुरुआत के बाद इसे रखा जाना चाहिए? – David

+0

@ डेविड: इसे कॉल करने से पहले इसे घोषित करने की आवश्यकता है। –

9

आप पहले से ही अपनी परियोजना में jQuery का उपयोग कर रहे हैं, तो आप $ .inArray() का उपयोग कर सकते

http://api.jquery.com/jQuery.inArray/

+0

धन्यवाद, इससे मेरी मदद की! : डी – nn2

-1

इस समारोह बुरा जब साहचर्य सरणियों का उपयोग कर रहा है।

अगर आप अपने कोड में है कि समारोह रखा है और इस

var a = new Array(); 

a["one"] = "1"; 

for(var i in a){ 

    alert(i) 

} 

आप 0 मिलता है, indexOf आप हर सरणी के लिए एक कुंजी के रूप indexOf डाला आप

बनाने जिसका अर्थ है लेकिन सरणी केवल होना चाहिए करना एक कुंजी और वह "एक"

jQuery का उपयोग करें!

-Mekias

0

indexOf() MSIE 11 और दूसरों पर यह गैर स्ट्रिंग चर पसंद नहीं है। उपनगरों में .toString() जोड़ें और इसे ठीक करना चाहिए।

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