我正在IE7上测试一行代码,但它给出了以下错误:
对象不支持此属性或方法,它引用
下面是问题所在:
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>
有什么办法解决这个问题吗?
最佳答案
querySelector
是only 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;
};
}