根据元素id为'的数组重新排列元素布局;s
Reorder elements layout according to array with elements id's
我需要执行以下任务:有两个"ul"元素包含一些具有唯一id的"li"。
<div id="sr">
<ul id="li-fav">
<li id="app-1">a</li>
<li id="app-2">b</li>
<li id="app-3">c</li>
</ul>
<ul id="li-rest">
<li id="app-4">d</li>
<li id="app-5">e</li>
<li id="app-6">f</li>
</ul>
</div>
使用getElementsOrder函数,我获得了包含元素编号id的数组:
function getElementsOrder(){
var f, r,
fLi = [], rLi = [];
f = document.getElementById('apps-fav').childElementNodes;
console.log(f);
for(var i=0, l=f.length; i<l; i+=1){
fLi.push(f[i].id.split('-')[1]);
}
r = document.getElementById('apps-rest').childElementNodes;
for(i=0, l=r.length; i<l; i+=1){
rLis.push(r[i].id.split('-')[1]);
}
return {'fav': fLi, 'rest': rLi};
}
// {'fav': [1, 2, 3], 'rest': [4, 5, 6]}
现在,当从不同排序的数组中读取数据时,我希望能够重新排序两个ul
中的li
元素,即:
//{'fav': [3, 4, 1], 'rest': [2, 5, 6]}
如何以最友好的浏览器方式做到这一点?使用document fragment
?台阶应该是什么?我有jsfiddle上的样品:
http://jsfiddle.net/PTx3f/
您可以沿着以下行移动li元素:
var favs = obj.fav; // where obj is the object returned by getElementsOrder()
var i = favs.length;
var ul = document.getElementById('li-fav');
while (i--) {
ul.insertBefore(document.getElementById('app-' + favs[i]), ul.firstChild);
}
var rest = obj.rest;
i = rest.length;
ul = document.getElementById('li-rest');
while (i--) {
ul.insertBefore(document.getElementById('app-' + rest[i]), ul.firstChild);
}
请注意递减计数,以便使用insertBefore以正确的顺序结束元素。应该重构代码以消除逻辑的重复。
编辑-重构
function doStuff() {
var i, ids, list, ul;
for (list in obj) {
if (obj.hasOwnProperty(list)) {
ids = obj[list];
i = ids.length;
ul = document.getElementById('li-' + list);
while (i--) {
ul.insertBefore(document.getElementById('app-' + ids[i]), ul.firstChild);
}
}
}
}
添加了一个hasOwnProperty测试来保护继承的可枚举属性。
相关文章:
- 触摸移动时切换到新元素
- 将按钮添加到新元素中
- 两个指令创建新的继承的和隔离的作用域-元素得到哪个
- 重新排列HTML元素的顺序并更改内容
- 如何在javascript上向数组的对象添加新元素
- 如果数组仍在执行,async.forEach()将运行我添加到数组中的新元素
- 使用CSS从下到上排列元素
- 剑道UI下载列表:如何动态添加新元素
- 如何将新的键/值对元素添加到现有数组
- Chrome应用程序在全屏中创建新窗口-html元素不是全高的
- 当在ng视图中加载新路由时,Tabbing(tabindex)针对错误的元素
- 在DIV中动态插入HTML并访问新元素
- 如何在php中按元素按字母顺序排列json文件
- 使一个新元素在某个时间出现
- javascript函数,它将数组作为输入,将每个数组元素增加1,并返回增加值的新数组
- 根据对多个数组唯一的元素创建一个新数组
- Javascript为jquery选择器重新排列数组
- 砌体重新排列,同时仍然调整大小
- 给元素新的id
- 如何将元素并排排列,而不考虑容器