我试图在我的纯css下拉列表中将我的列表元素设置为基于ul中最大元素的宽度的统一大小。这是当前的html:
<nav>
<ul id="drop-nav">
<li><a href="#">Home</a></li>
<li onmouseover="SizeChildren('DropDown1')"><a href="#">Filler</a>
<ul id="DropDown1">
<li><a href="#">Filler1</a></li>
<li><a href="#">Filler223456</a></li>
<li><a href="#">Filler212314235234523</a></li>
</ul>
</li>
</ul>
<nav>
我运行SizeChildren函数将父容器id传递给函数(注意:我意识到这里有冗余代码,它是我正在搞乱的东西):
function SizeChildren(ElementID)
{
var WidthArray = new Array();
UOList = document.getElementById(ElementID);
WidthArray = UOList.getElementsByTagName('li');
var MaxWidth;
for(i = 0; i < WidthArray.length; i++)
{
if(i == 0)
{
MaxWidth = WidthArray[i].offsetWidth;
}
else
{
var curr = WidthArray[i].offsetWidth;
if(curr > MaxWidth)
{
MaxWidth = curr;
}
}
}
var nodes = document.getElementById(ElementID).childNodes;
for(i = 0; i < nodes.length;i++)
{
if(nodes[i].nodeName.toLowerCase() == 'li')
{
nodes[i].style.width = MaxWidth;
}
}
}
我正在使用当前代码遇到两个问题,首先,它正在计算最大宽度为82(应该接近150或接近它)并且实际上并没有设置宽度,这意味着实际上页面上没有任何变化,我也不知道,即使最大宽度计算错误,这部分代码仍然有用,所以我错过了什么?我也试过使用.offsetWidth,但仍然没有结果。
我不能使用JQuery,弹性框或类似的东西,如果可能的话,必须用JavaScript完成。