0
經過多次更改和嘗試,我仍不明白爲什麼這不起作用。處理函數旨在刪除「def」類的段落。正在加載正文後執行,並且getElementsByClassName方法能夠找到它,如警告函數所示,但由於某種原因它無法刪除,爲什麼?parentNode.removeChild不移除元素,爲什麼?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="javascript">
function Process()
{
var elements = document.getElementsByClassName('def');
var elem = elements[0];
alert(elem.className);
elem.parentNode.removeChild(elem);
}
</script>
</head>
<body onload="Process();">
<h1>This is a title</h1>
<p>Sample Paragraph</p>
<p>This should not be interpreted by the Wiki</p>
<p class="def"><p id="definition">Text</p></p>
</body>
</html>
在此先感謝。
因此,在嵌套的段落情況下,是去除內段和後外一個只有這樣,才能刪除這兩個段落?我在哪裏可以找到更多關於他們爲什麼成爲兄弟元素的信息?我對這件事一無所知...... – BirdyBiker
@BirdyBiker你實際上不能在'p'標籤中放置'p'標籤。這是無效的,瀏覽器將(最可能)通過關閉打開的「p」標籤來嘗試解決問題以啓動新的標籤。我在規範的答案中添加了一個鏈接,指出哪些標籤不允許使用'p'標籤。 –
好的,我認爲已經理解了這個問題。總之:它不能被這樣刪除,因爲作爲一段無效HTML代碼的後果,「內部段落」從未被解釋爲子元素。我在幹什麼? :) – BirdyBiker