2011-02-14 232 views
4

例如,我有這樣的HTML:Javascript:如何更改節點名稱?

<body> 
    <div>Text</div> 
</body> 

而且我想給div更改爲其他類似p

這是我試過,但沒有作品:

var div = document.getElementsByTagName("div")[0]; // Get Element 
    div.nodeName = "p"; // Change It's Node Name to P 

請沒有圖書館,我真的不希望有一個新的P :)

回答

8

您更換實際的div不能只是改變一個元素。你必須創建一個新的。例如:

var div = document.getElementsByTagName("div")[0]; 
var p = document.createElement('p'); 
p.innerHTML = div.innerHTML; 
div.parentNode.replaceChild(p, div); 

但是,如果原始元素包含的節點不能是新節點的後代,那麼這可能會導致無效標記。

參考:document.createElementNode.replaceChild

+0

那麼,我也這樣做,但沒有任何預先定義的JavaScript函數或什麼? :) – Adam 2011-02-14 23:11:49

1

你不能。

作爲the MDC docs say

nodeName是一個只讀屬性。

您必須創建一個新元素併爲其提供正確的內容和屬性。

1

你不能。你之後的propery是tagName,但它是隻讀的。您將不得不創建所需類型的新節點,然後將innerHTML(以及類名稱或樣式等任何其他屬性)傳送到新節點。然後,將新節點插入舊節點的父節點,然後刪除舊節點(或使用replaceChild)。

換句話說,漫長的道路是唯一的道路。