我正在尝试按字母顺序对列表进行排序。
有人可以帮我弄清楚mbp:frameset
和idx:entry
标签的来源吗?
他们似乎没有回复getElementByTagName
。
这是代码。我已经尝试了几个版本来实现它的功能:
function sortUnorderedList(ul, sortDescending) {
if (typeof ul == "string")
ul = document.getElementByTagName("mbp:frameset");
var lis = ul.getElementByName("french");
var vals = [];
for (var i = 0, l = lis.length; i < l; i++)
vals.push(lis[i].innerHTML);
vals.sort();
if (sortDescending)
vals.reverse();
for (var i = 0, l = lis.length; i < l; i++)
lis[i].innerHTML = vals[i];
}
window.onload = function() {
var desc = false;
document.getElementById("test").onclick = function() {
sortUnorderedList("list", desc);
desc = !desc;
return false;
}
}
<input type="button" id="test" value="Sort List (click again to reverse)" />
<mbp:frameset>
<idx:entry name="french" scriptable="yes" spell="yes">
<idx:orth><b>Notion B</b>
</idx:orth>
<p>Définition B</p>
<br />
<hr>
<br />
</idx:entry>
<idx:entry name="french" scriptable="yes" spell="yes">
<idx:orth><b>Notion A</b>
</idx:orth>
<p>Définition A</p>
<br />
<hr>
<br />
</idx:entry>
<idx:entry name="french" scriptable="yes" spell="yes">
<idx:orth><b>Notion C</b>
</idx:orth>
<p>Définition C</p>
<br />
<hr>
<br />
</idx:entry>
</mbp:frameset>
答案 0 :(得分:0)
你有错字错误。 getElementByTagName
应为getElementsByTagName
。在s
之后遗失Element
。此外,您可以使用querySelector
按属性获取。 [attribute='Value']
。
一个指针。使用window.onLoad
或element.onclick
是一种不好的做法。您应该使用.addEventListener
。多次使用onclick=
将替换以前的值。这可能会导致问题。
function sortUnorderedList(ul, sortDescending) {
if (typeof ul == "string")
ul = document.getElementsByTagName("mbp:frameset")[0];
var lis = ul.querySelectorAll("[name='french']");
var vals = [];
for (var i = 0, l = lis.length; i < l; i++)
vals.push(lis[i].innerHTML);
vals.sort();
if (sortDescending)
vals.reverse();
for (var i = 0, l = lis.length; i < l; i++)
lis[i].innerHTML = vals[i];
}
window.addEventListener("load", function() {
var desc = false;
document.getElementById("test").addEventListener("click", function() {
sortUnorderedList("list", desc);
desc = !desc;
return false;
});
})
<input type="button" id="test" value="Sort List (click again to reverse)" /><br/>
<mbp:frameset>
<idx:entry name="french" scriptable="yes" spell="yes">
<idx:orth><b>Notion B</b>
</idx:orth>
<p>Définition B</p>
<br />
<hr>
<br />
</idx:entry>
<idx:entry name="french" scriptable="yes" spell="yes">
<idx:orth><b>Notion A</b>
</idx:orth>
<p>Définition A</p>
<br />
<hr>
<br />
</idx:entry>
<idx:entry name="french" scriptable="yes" spell="yes">
<idx:orth><b>Notion C</b>
</idx:orth>
<p>Définition C</p>
<br />
<hr>
<br />
</idx:entry>
</mbp:frameset>