2012-09-22 85 views
0

與IE的問題。 下面是代碼:className null或不是對象再次

if (($.browser.msie)) { 
    var first_el = 0; 
    var targie = document.getElementById(targId).getElementsByTagName("div"); 
    for (var i = 0; i < targie.length, first_el < 1; i++) { 
     if ((typeof targie[i].className != 'undefined') && (targie[i].className != null)) { 
      if ((targie[i].className == "category list even") || (targie[i].className == "category list") || (targie[i].className == "good list even") || (targie[i].className == "good list")) { 
       var targ = targie[i]; 
       first_el += 1; 
      } 
     } 
    } 
} 

和錯誤 - className null or not an object 發現了類似的話題,但解決方案並不能幫助我。

在此先感謝

回答

0

我認爲你應該使用getAttribute('class');如果用戶的broser是IE

1

我不認爲這是實際的錯誤信息。它更像是cannot access property "classname", targie[i] is null or not an object,不是嗎?

你的問題似乎是你的循環的條件部分:i < targie.length, first_el < 1它使用comma operator。這意味着只要沒有找到元素,循環就會運行 - 即使沒有更多的元素。將其更改爲i < targie.length && first_el < 1,它應該可以工作。

順便說一句,你似乎使用jQuery。爲什麼不使用像$("#"+targid+" div.list")這樣的DOM選擇器?然後,您可以使用每個循環來設置變量,或者只需添加一個選擇器並繼續使用jQuery。

+0

非常感謝。一切都好。 我不使用選擇器,因爲我需要繼續使用對象方法,這是不存在於JQuery –

+0

我喜歡在JS中的一個begginer,也許你知道,如何使相當於由選擇器返回的對象和返回的對象document.getElementByWhatever? –

+0

您可以輕鬆地從jQuery中返回DOM元素,因爲這使得代碼更容易,我強烈推薦它。你能附上週圍的代碼到你的問題嗎? – Bergi

相關問題