将列表元素集调整为最宽列表元素的宽度?

时间:2016-03-11 01:57:05

标签: javascript html css

我试图在我的纯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完成。

0 个答案:

没有答案