0

以下は私のページ用のJavaScriptです。

    window.onmouseover = function(){
        var body = document.getElementsByTagName("body")
        var h1 = document.getElementsByTagName("h1");
        var a = document.getElementsByTagName("a");
        var p = document.getElementsByTagName("p")
        for(var j = 0; j < p.length; j++) {
            body[j].style.fontFamily = "helvetica";
            body[j].style.backgroundColor = "rgb(250, 250, 240)"
            p[j].style.fontFamily = "courier";
            a[j].onclick = function() {
                this.style.backgroundColor = "Black"
            }
        }
    }

1つのh1要素、1つの要素、および10のp要素があります。何らかの理由で、このコードは最初のp要素のフォントのみを変更しますが、他のすべては正常に機能しますか?これはなぜですか、どうすれば修正できますか?

4

2 に答える 2

1

要素が1つだけaで、(もちろん)1つしかbodyない場合は、10を超えて反復することはできません。これにより、サイクルの2回目の反復でエラーが発生します。代わりにこのコードを使用してください。

window.onmouseover = function(){
    var body = document.getElementsByTagName("body")
    var h1 = document.getElementsByTagName("h1");
    var a = document.getElementsByTagName("a");
    var p = document.getElementsByTagName("p")

    body[0].style.fontFamily = "helvetica";
    body[0].style.backgroundColor = "rgb(250, 250, 240)"
    a[0].onclick = function() {
        this.style.backgroundColor = "Black"
    }

    for (var j = 0; j < p.length; j++) {
        p[j].style.fontFamily = "courier";
    }
}
于 2012-05-13T02:25:43.093 に答える
0

無効になるため、ループを介して2回目にエラーが発生している可能性がbody[1]あります。p上の操作だけがループ内にあるように物事を動かします。

于 2012-05-13T02:25:33.763 に答える