先來看個demo吧:
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<script type="text/javascript">
window.onload = function() {
var obox = document.getElementById("box");
var lis = obox.getElementsByTagName("li");
var obt = document.getElementById("bt");
var theArray = [];
for (var index = 0; index < lis.length; index++) {
theArray.push(lis[index]);
}
function randomSort(a, b) {
return Math.random() > 0.5 ? -1 : 1;
}
obt.onclick = function() {
obox.innerHTML = "";
var newArray = theArray.sort(randomSort);
for (var i = 0; i < newArray.length; i++) {
obox.appendChild(newArray[i]);
}
}
}
</script>
</head>
<body>
<ul id="box">
<li>螞蟻部落一</li>
<li>螞蟻部落二</li>
<li>螞蟻部落三</li>
<li>螞蟻部落四</li>
<li>螞蟻部落五</li>
</ul>
<input type="button" id="bt" value="查看效果" />
</body>
</html>
可以在IE下測試效果,推薦IE10,IE11瀏覽本頁。
測試區
-
- 螞蟻部落一
- 螞蟻部落二
- 螞蟻部落三
- 螞蟻部落四
- 螞蟻部落五
chrome,firefox,safari 下沒問題,可是IE所有版本下運行都不行。
這個是一哥們 落葉 在寫demo的時候發現的,他說這個在IE下有問題,我測試了下,確實就IE這個老變態不行。
於是我監視了下 theArray 這個數組,發現當 obox.innerHTML = ""; 執行后,
IE 下 theArray 數組的 li 的內容被清空了,但是 li 節點還在。
在chrome下不受影響。
這個問題就糾結了,我也不知道為什么,谷歌找了半個小時也沒找到,或者我找的關鍵詞不對。
我只能給個簡單的解決方法,就是克隆一份 li,並且在 appendChild 的時候,也克隆一份副本進去,這樣才能確保正確。
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<script type="text/javascript">
window.onload = function() {
var obox = document.getElementById("box");
var lis = obox.cloneNode(true).getElementsByTagName("li");
var obt = document.getElementById("bt");
var theArray = [];
for (var index = 0; index < lis.length; index++) {
theArray.push(lis[index]);
}
function rnd(a, b) {
return Math.random() > 0.5 ? -1 : 1;
}
obt.onclick = function() {
obox.innerHTML = "";
var newArray = theArray.sort(rnd);
for (var i=0,l=newArray.length; i<l; i++) {
obox.appendChild(newArray[i].cloneNode(true));
}
}
}
</script>
</head>
<body>
<ul id="box">
<li>螞蟻部落一</li>
<li>螞蟻部落二</li>
<li>螞蟻部落三</li>
<li>螞蟻部落四</li>
<li>螞蟻部落五</li>
</ul>
<input type="button" id="bt" value="查看效果" />
</body>
</html>
測試區
-
- 螞蟻部落一
- 螞蟻部落二
- 螞蟻部落三
- 螞蟻部落四
- 螞蟻部落五
好了,今天算是水了一篇,如果有大神知道怎么回事的,還望指點一二,小生在此先謝過了。

