1

IE7 で 1 行のコードをテストしていますが、次のエラーが表示されます。

オブジェクトはこのプロパティまたはメソッドをサポートしておらず、参照しています

問題の行は次のとおりです。

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>

とにかくそれを修正する方法はありますか?

4

4 に答える 4

4

querySelectorIE8+でのみ使用できます。IE7 でセレクターによるクエリを実行するには、jquery に組み込まれているセレクターによる CSS クエリ コードのスタンドアロン バージョンであるSizzleのようなものが必要です。または、少し軽くてシームレスなものを好む場合は、ここで説明されているようなポリフィルを使用できます。

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;
  };
}
于 2013-11-17T13:14:16.100 に答える
2

古いIEにはありませんquerySelector。シズル(jQueryにあるもの)、ゼストなどのエンジンを使用する必要があります

于 2013-03-24T17:13:44.617 に答える
1

IE 9+では、使用しているようなcss3セレクターがサポートされています..

http://caniuse.com/queryselector

于 2013-03-24T17:15:45.560 に答える