所以这是我用链接排序列表(按字母顺序排列)的javascript:
function compareText(a1, a2) {
var t1 = a1.innerText, t2 = a2.innerText;
return t1 > t2 ? 1 : (t1 < t2 ? -1 : 0);
}
function sortUnorderedList(ul, sortDescending) {
if(typeof ul == "string") {
ul = document.getElementById(ul);
}
var lis = ul.getElementsByTagName("LI");
var vals = [];
for(var i = 0, l = lis.length; i < l; i++) {
vals.push(lis[i]);
}
vals.sort(compareText);
if(sortDescending) {
vals.reverse();
}
ul.innerHTML = '';
for(var i = 0, l = vals.length; i < l; i++) {
ul.appendChild(vals[i]);
}
}
<div id="test"> <a href="#">Sort List</a>
</div>
<ul id="list">
<li><a href="www.tumblr.com/post/9080">apple</a></li>
<li><a href="www.tumblr.com/post/2378">pie</a></li>
<li><a href="www.tumblr.com/post/5627">banana</a></li>
</ul>
现在这个脚本在safari中运行得很好,但是在firefox中,它不起作用..如何在所有浏览器中使用它?
答案 0 :(得分:2)
您必须使用textContent
代替innerText
。 innerText
将在Firefox中返回undefined
。
<强>演示强> Try before buy
答案 1 :(得分:0)
Firefox中存在的问题可能是由于文档对象模型(DOM)在执行JavaScript时尚未就绪并且可用。不同的浏览器以不同的方式处理事物,并且在执行脚本时就是其中之一。
您需要做的是:
您可以使用它来检测页面加载的时间:
var readyStateCheckInterval = setInterval(function() {
if (document.readyState === "complete") {
init(); // This is the function that would contain your code.
clearInterval(readyStateCheckInterval);
}
}, 10);