2010-10-23 114 views
7

假設我想將所有<img>標記更改爲頁面上的標記。 JavaScript可以用於這個目的嗎?使用Javascript更改標記的類型

有什麼方法可以改變實際的標籤類型,或者我必須先刪除<img>然後再創建,如果是的話,我怎樣才能確保新標籤與舊標籤具有相同的容器等?

什麼是最直接的和瀏覽器友好的方式來執行這種替代?

回答

4

雖然使用庫等jQuery更方便,可以用這樣的無庫(更換元件,不改變的類型)做到這一點:

實施例:http://jsfiddle.net/BvSvb/

var imgs = document.getElementsByTagName('img'); 

var i = imgs.length; 
var parent; 
var iframe = document.createElement('iframe'); 
var currFrame; 

while(i--) { 
    currFrame = iframe.cloneNode(false); 
    currFrame.setAttribute('src', imgs[ i ].getAttribute('src')); 
    parent = imgs[ i ].parentNode; 
    parent.insertBefore(currFrame, imgs[ i ]); 
    parent.removeChild(imgs[ i ]); 
} 
0

您不能更改標籤的類型,您只能用不同的標籤替換它們。

您可以通過設置newElement.innerHTML = oldElement.innerHTML複製內容。

+1

請注意,儘管'innerHTML'得到了廣泛的支持,但它目前不是任何W3C標準的一部分。如果你想產生一個最大可移植的實現,應該避免使用「innerHTML」。 – Tim 2010-10-23 17:48:52

1

無法更改tagName。
您可以創建一個新元素,並將舊元素的屬性分配給新元素,將childNodes移動到新元素中,並用新元素替換舊元素。

3

使用標準接口,只有在創建元素時才能設置DOM元素的類型。您可以在一個標準的方式合理地達到最接近的將是:

  • 創建所需類型
  • 副本從舊元素的每個屬性到新
  • 移動的每一個孩子的新元素舊元素成爲新一個
  • 一個孩子如果要做到這一點,需要幫助這樣做用新

替換DOM樹中的老元素,不要再問。

1

您不能更改html標記名稱的類型,但可以替換它們。一個簡單的方法就是用jQuerys replacewith函數。