jQuery ie8 Object Null或undefined

时间:2014-03-13 21:15:02

标签: javascript jquery internet-explorer-8

我有一个很大的问题,并试图解决它,因为几个小时但没有说话。 一切都很好,而不是IE8。

var geschlechtA= jQuery('#geschlecht').find('.active').text();
var grund_basisB= jQuery('#grund_basis').find('.active').text();
var varianteC= jQuery('#variante').find('.active').text();
var farbeD= jQuery('#farbe').find('.active span').text();
var param =[geschlechtA,grund_basisB,varianteC,farbeD];
var bildDaten=[
{"geschlecht":"männlich","basis":"Business","variante":"klassisch","farbe":"schwarz/weiss","bsrc":"mydomain/img1.jpg"},
{"geschlecht":"weiblich","basis":"Bistro","variante":"leger","farbe":"jeans/weiss","bsrc":"mydomain/img2.jpg"},
{"geschlecht":"männlich","basis":"Business","variante":"klassisch","farbe":"schwarz/weiss","bsrc":"mydomain/img3.jpg"},
{"geschlecht":"männlich","basis":"Business","variante":"klassisch","farbe":"schwarz/blau","bsrc":"mydomain/img4.jpg"},
]

var found=false;

    for (var i = 0; i < bildDaten.length; i++) {
        if(bildDaten[i].geschlecht==param[0]){
            if(bildDaten[i].basis==param[1]){
                if(bildDaten[i].variante==param[2]){
                    if(bildDaten[i].farbe==param[3]){
                        found=true;
                        jQuery('#image_container img').attr('src', bildDaten[i].bsrc);
                    }
                }
            }
        }
    };
    if(!found){
        jQuery('#image_container img').attr('src', bildDaten[0].bsrc);
    }

我试图制作一个简单的Cloth配置器。 它在Chrome,FF,IE9 +中非常有效, 但我得到ie8以下错误:

SCRIPT5007: Für die Eigenschaft "geschlecht" kann kein Wert abgerufen werden: Das Objekt ist Null oder undefiniert 

它表示属性“geschlecht”无法获取值,对象为NULL或未定义。

我怎么能这样呢?

1 个答案:

答案 0 :(得分:2)

IE8无法正确读取尾随逗号。从bildDaten数组中删除最后一个逗号。

还尝试将代码放在匿名闭包中。 IE有各种内置的,不可重写的对象。

(function () {
  // Your code
}());

顺便说一下,没有对应if的嵌套else可以随时重构为&&

for (var i = 0; i < bildDaten.length; i++) {
  if (bildDaten[i].geschlecht == param[0] &&
      bildDaten[i].basis == param[1] &&
      bildDaten[i].variante == param[2] &&
      bildDaten[i].farbe == param[3]) 
  {
    found = true;
    jQuery('#image_container img').attr('src', bildDaten[i].bsrc);
  }
}