Html 为具有相同id的两个div动态设置宽度

Html 为具有相同id的两个div动态设置宽度,html,dynamic,width,Html,Dynamic,Width,我有两个或三个具有相同id的div元素。下面我使用以下javascript动态设置宽度: 函数setWidthrPanelassments(){ for(var i=0;i

我有两个或三个具有相同id的div元素。下面我使用以下javascript动态设置宽度:

函数setWidthrPanelassments(){

for(var i=0;i<$(“div:visible[id*='s1'])。长度;i++){
if(document.getElementById(“s1”).offsetWidth<250){
var w=document.getElementById(“s1”);
w、 style.width=250;
}
}
}

问题是,它只为第一个div设置宽度,其余div未设置值250。我使用alert()进行了验证,但是对于所有div,它的显示值为250。但不在屏幕上渲染。如何解决这个问题


所有浏览器都会出现此问题。

多个元素不应具有相同的ID。因此,
getElementByID
函数仅返回具有该ID的第一个元素。将ID改为类,然后使用
getElementsByCassName
函数选择所有元素并对其进行迭代

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

谢谢你的回复。但是IE7和IE8浏览器不支持getElementsByClassName。对我来说,上述代码也需要在IE7和IE8上运行。@Iraiyavan请尝试使用-它也可以在旧的IE浏览器上运行。@Iraiyavan或者,您可以使用jQuery选择器,它可以为您处理浏览器兼容性。我将使用一个同样使用jQuery的函数来编辑这篇文章。
function SetWidthRPanelAssessments()
{
    var divs = document.getElementsByClassName("s1");
    for (i = 0; i < divs.length; i++)
    {
        if (divs[i].offsetWidth < 250) divs[i].style.width = 250;
    }
}
function SetWidthRPanelAssessments()
{
    $(".s1").each(function(){
        if ($(this).offsetWidth < 250) $(this).css("width","250");
    });
}