重新排列HTML元素的顺序并更改内容
Reorder elements of HTML and change content
我想重新排序网页中某些元素的显示位置。根据这个问题的答案,我有以下代码:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script>
function reorder() {
var grp = $(".myItems").children();
var cnt = grp.length;
var temp,x;
for (var i = 0; i < cnt; i++) {
temp = grp[i];
x = Math.floor(Math.random() * cnt);
grp[i] = grp[x];
grp[x] = temp;
}
$(grp).remove();
$(".myItems").append($(grp));
}
</script>
</head>
<body onload="reorder();">
<div class="myItems">
<div class="item" title="Row 1">1</div>
<div class="item" title="Row 2">2</div>
<div class="item" title="Row 3">3</div>
</div>
</body>
</html>
我遇到的问题是,我还需要根据<div>
标签的出现顺序修改它们的内容。在本例中,我需要更改title
标记中的行标识符。
例如,刷新后,可能的结果是:
<div class="myItems">
<div class="item" title="Row 1">2</div>
<div class="item" title="Row 2">1</div>
<div class="item" title="Row 3">3</div>
</div>
或
<div class="myItems">
<div class="item" title="Row 1">3</div>
<div class="item" title="Row 2">2</div>
<div class="item" title="Row 3">1</div>
</div>
请注意,当显示的数字发生变化时,标题的顺序保持不变。
将其添加到$(grp).remove()
:之前
for(var i = 0; i < cnt; i ++) {
grp[i].title = "Row " + (i + 1);
}
将它们随机化后,在grp
上循环,并将每个属性的属性title
重置为'Row '+i
,其中i = index in array + 1
如果你做,你可以在随机步骤中这样做
grp[i].setAttribute('title','Row '+(i+1));
grp[x].setAttribute('title','Row '+(x+1));
这导致多次调用.setAttribute
,但需要少一个循环。
相关文章:
- 按我自己的类克隆另一个元素的内容和顺序
- 重新排列HTML元素的顺序并更改内容
- 在Javascript中列出顺序子集元素
- HEAD中LINK和STYLE元素的求值顺序
- 如何在php中按元素按字母顺序排列json文件
- Javascript - 如何按顺序从数组中挑选随机元素
- 使用 KNOCKOUT.js 在禁用元素的 HTML 中保持 Tab 键顺序
- 如何将.append()创建的元素顺序添加到先前添加的元素中
- 排列<p>使用jQuery按日期顺序排列的元素
- 通过普通JS更改元素的索引(顺序)
- 按随机顺序对元素进行动画处理
- 在不使用jQuery sortable的情况下警告丢弃元素的顺序
- 如何使用jQuery以与多选框中相同的顺序检索多选框中所有选定和未选定的元素
- 循环中元素的显示顺序
- 在Firefox中的keydown事件中隐藏元素时焦点顺序错误
- 使用动态构建的 jQuery 承诺链按顺序激活特定元素
- 如何按顺序将类添加到元素集合
- 如何反转 JavaScript 变量中 HTML DOM 元素的顺序
- 按顺序显示动画 SVG 元素
- Jquery/CSS带回调的顺序元素动画