假設我想將所有<img>
標記更改爲頁面上的標記。 JavaScript可以用於這個目的嗎?使用Javascript更改標記的類型
有什麼方法可以改變實際的標籤類型,或者我必須先刪除<img>
然後再創建,如果是的話,我怎樣才能確保新標籤與舊標籤具有相同的容器等?
什麼是最直接的和瀏覽器友好的方式來執行這種替代?
假設我想將所有<img>
標記更改爲頁面上的標記。 JavaScript可以用於這個目的嗎?使用Javascript更改標記的類型
有什麼方法可以改變實際的標籤類型,或者我必須先刪除<img>
然後再創建,如果是的話,我怎樣才能確保新標籤與舊標籤具有相同的容器等?
什麼是最直接的和瀏覽器友好的方式來執行這種替代?
雖然使用庫等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 ]);
}
您不能更改標籤的類型,您只能用不同的標籤替換它們。
您可以通過設置newElement.innerHTML = oldElement.innerHTML
複製內容。
無法更改tagName。
您可以創建一個新元素,並將舊元素的屬性分配給新元素,將childNodes移動到新元素中,並用新元素替換舊元素。
使用標準接口,只有在創建元素時才能設置DOM元素的類型。您可以在一個標準的方式合理地達到最接近的將是:
替換DOM樹中的老元素,不要再問。
您不能更改html標記名稱的類型,但可以替換它們。一個簡單的方法就是用jQuerys replacewith函數。
請注意,儘管'innerHTML'得到了廣泛的支持,但它目前不是任何W3C標準的一部分。如果你想產生一個最大可移植的實現,應該避免使用「innerHTML」。 – Tim 2010-10-23 17:48:52