【发布时间】:2017-06-25 01:03:29
【问题描述】:
我正在创建一些 Javascript 代码,以便溢出的菜单链接移动到一个名为 more 的单独菜单中。
第一次加载时,它运行良好。然而,当它再次运行时,事情开始洗牌......
此处摘录:
var tele = document.getElementById('teleporter'),
rec = document.getElementById('receiver');
window.onresize = resize;
resize();
function resize() {
var rChildren = rec.children,
numW = 0;
for (var i = 0; i < rChildren.length; i++) {
var child = rChildren[i];
var fragment = document.createDocumentFragment().appendChild(child);
child.outHTML = '';
tele.appendChild(fragment);
}
var teleW = tele.offsetWidth,
tChildren = tele.children;
for (var i = 0; i < tChildren.length; i++) {
var child = tChildren[i];
numW += child.offsetWidth;
if (numW > teleW) {
var fragment = document.createDocumentFragment().appendChild(child);
child.outHTML = '';
rec.appendChild(fragment);
i--;
}
}
}
#teleporter {
height: 20px;
overflow: hidden;
box-sizing: border-box;
padding: 0;
}
li {
float: left;
padding: 0 10px;
box-sizing: border-box;
list-style: none;
}
<ul id="teleporter">
<li>List item 0</li>
<li>List item 1</li>
<li>List item 2</li>
<li>List item 3</li>
<li>List item 4</li>
<li>List item 5</li>
<li>List item 6</li>
<li>List item 7</li>
<li>List item 8</li>
<li>List item 9</li>
<li>List item 10</li>
<li>List item 11</li>
<li>List item 12</li>
<li>List item 13</li>
</ul>
<div>More:
<ul id="receiver"></ul>
</div>
为什么它不起作用?
【问题讨论】:
-
不阅读完整代码,你不想在从第二个菜单移动到第一个时附加孩子,从第一个到第二个时插入作为第一个吗?
-
嗯....我认为这在第一次加载时不会起作用,但我绝对是我所缺少的....谢谢!
-
@Icepickle 再看一遍,我意识到这实际上应该不是问题。第一个 for 循环应将其重置为原来的状态,第二个循环对其进行排序。