2011-08-22 9 views
26

यह लाइन है:इंटरनेट एक्सप्लोरर 8 में फ़िलटर() क्यों काम नहीं करेगा?

songs = songs.filter(function (el) { 
    return el.album==album; 
}); 

यह त्रुटि है:

Object doesn't support this property or method

यह क्रोम में 100% ठीक काम करता है। क्या चल रहा है?

+0

मैं अपने उत्तर पोस्ट से पहले मैंने देखा कि पौलुस की। क्या गाने एक सरणी या jQuery वस्तु है? – Dennis

उत्तर

64

Array.filter() संस्करण जब तक IE में शामिल नहीं है 9.

आप इस का उपयोग इसे लागू करने के सकता है:

if (!Array.prototype.filter) 
{ 
    Array.prototype.filter = function(fun /*, thisp */) 
    { 
    "use strict"; 

    if (this === void 0 || this === null) 
     throw new TypeError(); 

    var t = Object(this); 
    var len = t.length >>> 0; 
    if (typeof fun !== "function") 
     throw new TypeError(); 

    var res = []; 
    var thisp = arguments[1]; 
    for (var i = 0; i < len; i++) 
    { 
     if (i in t) 
     { 
     var val = t[i]; // in case fun mutates this 
     if (fun.call(thisp, val, i, t)) 
      res.push(val); 
     } 
    } 

    return res; 
    }; 
} 

से: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter

या जब से तुम jQuery का उपयोग कर रहे हैं, आप कर सकते हैं अपनी सरणी को एक jQuery ऑब्जेक्ट में पहले लपेटें:

songs = $(songs).filter(function(){ 
    return this.album==album; 
}); 
+1

फ़िल्टर फ़ंक्शन के लिए तर्क एक अनुक्रमणिका है। वास्तविक तत्व प्राप्त करने के लिए, आप बस 'इस' का उपयोग कर सकते हैं। http://api.jquery.com/filter/ – Dennis

+2

धन्यवाद! यह पूरी तरह से काम किया। –

+0

आप फ़ंक्शन में i, v भी कर सकते हैं, जहां v सरणी है और मैं तत्व हूं। –

0

attr() फ़ंक्शन काम का उपयोग करता है?

songs = songs.filter(function (index) { 
    return $(this).attr("album") == album; 
}); 
1

es5-shim का उपयोग करें, ताकि आप IE8 में फ़िल्टर/अनुक्रमणिका का उपयोग कर सकें!

फेसबुक का रिएक्शन.जेएस इसका भी उपयोग कर रहा है।

<!--[if lte IE 8]> 
    <script type="text/javascript" src="/react/js/html5shiv.min.js"></script> 
    <script type="text/javascript" src="/react/js/es5-shim.min.js"></script> 
    <script type="text/javascript" src="/react/js/es5-sham.min.js"></script> 
    <![endif]--> 

https://github.com/es-shims/es5-shim

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