[新着] Webテンプレートを仮オープンしました
<ul id="list_id">
<li>内容1</li>
<li>内容2</li>
<li>内容3</li>
<li>内容4</li>
<li>内容5</li>
</ul>というHTMLに対して、5. 内容1 4. 内容2 3. 内容3 2. 内容4 1. 内容5のように、逆順に番号が出力されることを期待しているとき、どのようにコーディングすることが考えられるのでしょうか?
var list = document.getElementById("list_id");
list.style.listStyle = "decimal";
var len = list.childNodes.length;
var ary = new Array(len);
var max = 0;
for(var i=0; i<len; ++i){
if(typeof list.childNodes[i].value == 'undefined'){
ary[i] = false;
} else{
ary[i] = true;
++max;
}
}
var num = 0;
for(var i=0; i<len; ++i){
if(ary[i]) list.childNodes[i].value = max - num++;
}これを利用するのは、あるページでの「最新記事」のリストを、上を最新として表示するため番号を降順に振りたいといった場合です。// For HTML 4.01 Transitional (because of the deprecated "value" in HTMLLIElement)
var UL = document.getElementById ('list_id');
var n = UL.lastChild;
var i = 1;
UL.style.listStyle = 'decimal';
for (; n; n = n.previousSibling) if (n.nodeName == 'LI') n.value = i++;