一個刪除節點的JS,在IE中刪除最後一個節點沒有問題,但在firefox中每次點了刪除後不會刪除,再點一次才能刪除。
<html>
<head>
<title>刪除元素 Javascript RemoveChild</title>
<script type="text/javascript">
function delNode(){
var para = document.getElementById("delUl");
var paraLen = para.getElementsByTagName("li").length;
if(paraLen>0)
{
para.removeChild(para.lastChild);
}else{
alert("沒有了!");
}
}
</script>
</head>
<body>
<ul id="delUl">
<li>list1</li>
<li>list2</li>
<li>list3</li>
<li>list4</li>
<li>list5</li>
</ul>
<input type="button" value="Delete" onclick="delNode();" />
</body>
</html>
改為:
function delNode(){
var para = document.getElementById("delUl");
var paraLen = para.getElementsByTagName("li").length;
if(paraLen>0)
{
//while用於支援firefox,由於Firefox認為這裡的lastChild是文本節點,直接removeChild(para.lastChild)不起作用
while(para.lastChild && para.lastChild.nodeType == 3)
{
para.removeChild(para.lastChild);
}
para.removeChild(para.lastChild);
//另一種更簡便的方法:lastElementChild只支援Firefox
//para.removeChild(para.lastElementChild ? para.lastElementChild : para.lastChild);
}else{
alert("沒有了!");
para.removeChild(para.lastChild);
}
這樣IE和Firefox效果一樣了!