2013-03-24 82 views
1

我在IE7測試一行代碼,但它給我下面的錯誤:對象不支持此屬性或方法document.querySelector

Object doesn't support this property or method and it refers to

這裏的問題線問題:

var checked = document.querySelector('[name="answer1"]:checked'); 

這是整個代碼

問題1:你喜歡訓練嗎?

<input name="q4" value="Yes" type="radio"> Yes 
<input name="q4" value="No" type="radio"> No 
<br> 
<button id="getval">cick here</button> 

<script type="text/javascript"> 
document.getElementById('getval').onclick = function() { 
    var checked = document.querySelector('[name="q4"]:checked'); 
    alert(checked ? checked.value : 'Not selected'); 
} 
</script> 

有沒有辦法解決這個問題?

+0

其中IE的版本?所有IE? – Rishabh 2013-03-24 17:13:28

+0

是的,特別是7 – 2013-03-24 17:14:01

+0

我在IE10有類似的問題...任何想法? – 2013-11-08 21:25:34

回答

2

舊的IE沒有querySelector。你必須使用一個引擎,如嘶嘶聲(這是在jQuery的是什麼),熱情等

+0

是唯一的方法嗎? – 2013-03-24 17:30:15

+0

你也可以遍歷元素來找到匹配的元素 – Ven 2013-03-24 17:31:17

0

你可以參考creating-a-queryselector-for-ie-that-runs-at-native-speedadding-document-queryselectorall-support-to-ie-7

好吧,你可以使用jQuery $(「#選擇」)作爲等於queryselector,您可以包括jQuery的爲。

+1

請注意,[鏈接只回答](http://meta.stackoverflow.com/tags/link-only-answers/info)是不鼓勵,所以答案應該是尋找解決方案的終點(而不是另一個引用的中途停留時間,隨着時間的推移它們會變得陳舊)。請考慮在此添加獨立的摘要,並將鏈接保留爲參考。 – kleopatra 2013-11-17 11:58:36

4

querySelectoronly available in IE8+。要通過IE7中的選擇器查詢,您需要諸如Sizzle之類的東西,它是jQuery中內置的CSS查詢選擇器代碼的獨立版本。或者,如果你喜歡的東西有點更輕,更無縫的,你可以使用填充工具,如一個described here,像這樣:

if (!document.querySelectorAll) { 
    document.querySelectorAll = function (selectors) { 
    var style = document.createElement('style'), elements = [], element; 
    document.documentElement.firstChild.appendChild(style); 
    document._qsa = []; 

    style.styleSheet.cssText = selectors + '{x-qsa:expression(document._qsa && document._qsa.push(this))}'; 
    window.scrollBy(0, 0); 
    style.parentNode.removeChild(style); 

    while (document._qsa.length) { 
     element = document._qsa.shift(); 
     element.style.removeAttribute('x-qsa'); 
     elements.push(element); 
    } 
    document._qsa = null; 
    return elements; 
    }; 
} 

if (!document.querySelector) { 
    document.querySelector = function (selectors) { 
    var elements = document.querySelectorAll(selectors); 
    return (elements.length) ? elements[0] : null; 
    }; 
} 
相關問題