【发布时间】:2011-11-28 01:13:12
【问题描述】:
我有一个按字母顺序返回列表的脚本,如下所示
<div id="x">
<ul>
<li>Apple
<li>Banana
<li>Blackberry
<li>Blueberry
<li>Cherry
<li>Cranberry
</ul>
</div>
但是列表中有很多项目(将近 100 个),我希望将它们重新排列如下
<div id="x">
<span id="A">A</span>
<ul>
<li>Apple
</ul>
<span id="B">B</span>
<ul>
<li>Banana
<li>Blackberry
<li>Blueberry
</ul>
<span id="C">C</span>
<ul>
<li>Cherry
<li>Cranberry
</ul>
<div>
顺便说一句,我并不是真的在分类水果,这只是一个例子。
它必须是那种形式,出于无关紧要的原因,我只需要帮助创建和附加跨度元素和单个列表。
我尝试过使用内部/外部 HTML,但我发现它真的很难。我目前有这样的事情:
function getAllLists()
{
var page = document.getElementById("x")
var allLists = page.getElementsByTagName("li");
var num = allLists.length;
//Some form of a for counter loop here
for (var counter = 0; counter < num; counter++) {
var first=allLists[counter].outerHTML;
var second=allLists[counter+1].outerHTML;
var firstletter= (allLists[counter].substring(0, 1)).toUpperCase();
var secondletter= (allLists[counter+1].substring(0, 1)).toUpperCase();
allLists[counter].outerHTML = '<span id="'+firstletter+'">'+firstletter+'</span>'+first;
}
}
请避免使用 JQUERY。
我怎么强调都不过分!!
我不仅发现它非常难以理解,因为我仍然是 javascript 的业余爱好者,并且发现 js 已经够难了,jquery 的语法就像愚蠢地难以理解。
我确信无需使用 jquery 就可以实现我的目标。
有任何想法吗?所有帮助/cmets/想法都非常感谢。
非常感谢。
【问题讨论】:
-
我认为你可能错过了 jQuery 的重点,它不是为了让事情变得更困难;这些天大多数人真的不必再直接学习javascript了。
-
@SLaks:有效 -
<li>元素不需要结束标签。 -
@SLaks——怎么样?在我看来很好。应该删除该评论。
-
@BoltClock — outerHTML 在 HTML5 中,但还不是 Firefox(可能还有其他)。 HTML5 的一个目的是记录浏览器中的内容,因此它的存在实际上只是记录常见的当前浏览器功能并鼓励其他人效仿。
-
@Godwin jQuery 可以提供抽象和规范化。 not 是为了避免学习 javascript。请不要建议人们使用他们不理解的抽象
标签: javascript html innerhtml getelementbyid outerhtml