2016-03-03 77 views
2

我試圖通過類名獲得元素,並且在IE 9 +中,我可以在IE 8 document.querySelectorAll工作時使用document.getElementsByClassName。如何在IE 7和6中通過類名獲取元素

上述2個功能不可用在IE 7和我想要在這裏使用getElementsByClassName() doesn't work in old Internet Explorers like IE6, IE7, IE8

下面提供了加波的答案的想法是我想要`

function getElementsByClassNameBackwardCompatability(className) { 
    if (document.getElementsByClassName) { 
     return document.getElementsByClassName(className);//EI 9+ 
    } else if (document.querySelectorAll(className)) { 
     return document.querySelectorAll(className);//EI 8 
    } else { // IE7 - (not working) 
     var d = document, element, pattern; 
     pattern = ".//*[contains(concat(' ',@@class, ' '), ' " + className + " ')]"; 
     element = d.evaluate(pattern, d, null, 0, null); 
     return element; 
    } 
}` 
代碼

它拋出錯誤「JavaScript runtime error: Could not complete the operation due to error 80020101.」在IE 7

及以下的是我如何使用功能

 var ddlone = getElementsByClassNameBackwardCompatability(".myClass"); 
     $(ddlone).dropdownchecklist("destroy"); 
     $(ddlone).dropdownchecklist({ icon: {}, closeRadioOnClick: true, maxDropHeight: 150}); 

    $(getElementsByClassNameBackwardCompatability(".myDateClass")).each(function() { 
      $(this).datepicker({ 
       dateFormat: 'dd/mm/yy', 
       showButtonPanel: true, 
       changeMonth: true, 
       changeYear: true, 
       defaultDate: new Date(), 
      });}); 

任何一個我怎麼能得到這個工作在IE 7?

+0

爲什麼你需要抓住那隻老貓? –

+0

這裏的大貓有他們的機器上的IE 11,但他們運行它的文檔模式7:=) – StackTrace

+1

然後告訴老虎不要切換瘋狂的貓。 –

回答

0

該函數確實需要一個類名,而不是類選擇器 - 沒有點。嘗試調用它作爲

getElementsByClassNameBackwardCompatability(".myDateClass") 

你真的應該使用original code from that answer,你是在導致其無法正常工作的幾個關鍵方面不同。

相關問題