对象不支持此属性或方法

对象不支持此属性或方法

我正在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>

有什么办法解决这个问题吗?

最佳答案

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;
  };
}

07-28 07:26