3

各文字の背景が同じ (幅 31px ) のアルファベットを表示しています。文字の半分の幅を 30px にする必要があります。これは以下によって処理されます。

div.alpha:nth-child(even) {width: 30px;}

ただし、疑似互換性の問題のため、これは ie では機能しません。

IN quirks modeで動作する純粋な JavaScript の代替手段を探しています。

私は試した:

function letterwidth () {
    var a = document.querySelectorAll ('div.alphabet');
    for (var i = 0, b = a.length; i < b; i++){
        if (i % 2 == 0) {
            a[i].style.width = '30px';
        }
    }
}

しかし、私はエラーが発生します:

SCRIPT438: オブジェクトはプロパティまたはメソッド 'querySelectorAll' をサポートしていません

4

3 に答える 3

1

がブラウザでサポートされていない場合querySelectorは、通常の DOM トラバーサル メソッドを使用する必要があります。

var el  = [],
    div = document.getElementsByTagName('div');

for (var i=0; i<div.length; i++) {
    if (div[i].className.indexOf('alphabet') != -1) 
        el.push(div[i]);
}

for (var i=0; i<el.length; i++){
    if (i % 2 == 0)
         el[i].style.width = '30px';
}

フィドル

于 2013-08-01T14:33:20.733 に答える
0

Object doesn't support property or method 'querySelectorAll'

古いブラウザ。

jQuery は純粋な JavaScript です。そのため、最終的に jQuery のパーサーに似たものを取得するために自分でセレクター パーサーを書き直したい場合を除き、直接使用することをお勧めします。

于 2013-08-01T14:31:10.160 に答える