0

同じ ID を持つ 2 つまたは 3 つの div 要素があります。ここでは、次の JavaScript を使用して幅を動的に設定しています。

関数 SetWidthRPanelAssessments() {

for (var i = 0; i < $("div:visible[id*='s1']").length; i++) {
    if (document.getElementById("s1").offsetWidth < 250) {
        var w = document.getElementById("s1");
        w.style.width = 250;
    }
}

}

問題は、最初の div のみに幅を設定し、残りの div は値 250 を設定していないことです。ただし、画面にはレンダリングされません。この問題を解決するにはどうすればよいですか?

この問題は、すべてのブラウザで発生しています。

4

1 に答える 1

1

複数の要素が同じIDを持つべきではありません。このため、getElementByID関数はそのIDを持つ最初の関数のみを返します。代わりにIDをクラスgetElementsByClassNameに変更してから、関数を使用してそれらすべてを選択し、それらを反復処理します。

function SetWidthRPanelAssessments()
{
    var divs = document.getElementsByClassName("s1");
    for (i = 0; i < divs.length; i++)
    {
        if (divs[i].offsetWidth < 250) divs[i].style.width = 250;
    }
}

または、jQueryを使用して、ブラウザーとの競合を回避しgetElementsByClassNameます。

function SetWidthRPanelAssessments()
{
    $(".s1").each(function(){
        if ($(this).offsetWidth < 250) $(this).css("width","250");
    });
}
于 2012-08-03T05:13:07.693 に答える