2012-01-04 143 views
3

我想知道是否可以使用javascript更改HTML元素數據類型?動態更改HTML元素類型

例如將img更改爲div?我這樣做的原因是不破壞創建div的原因是因爲該元素包含很多內聯樣式,所以我需要將所有內聯樣式從img複製到div。 PS:這個網站只適用於iPad,所以跨瀏覽器兼容性不是問題。

var div = img.cloneNode(true); 
div.type = "div"; 

所以它會更容易克隆使用img.cloneNode(真)的節點/元素,則必須將類型更改爲一個div。我希望這是可能的?

如果不是也許有一種簡單的方法將一個元素樣式複製到另一個元素?也許......

// img is an img HTML element 
var div = document.createElement("div"); 
div.style = img.style; 
document.body.removeChild(img); // does that destroy div.style aswell? 
+2

您不能將元素從一個「類型」更改爲另一個「類型」,但可以將樣式屬性從一個複製到另一個以複製內聯樣式。但是,效果可能不盡相同。 – RobG 2012-01-04 02:56:11

+0

[如何使用jquery更改元素類型]的可能重複(https://stackoverflow.com/questions/8584098/how-to-change-an-element-type-using-jquery) – C8H10N4O2 2017-12-13 13:21:19

回答

1

您無法更改元素的類型。是的,div的風格將被覆蓋,除非你連接div.style + = img.style。在這種情況下,像img樣式屬性覆蓋div的。

+1

這將複製img.style **對象**到div,而不是屬性。 – RobG 2012-01-04 03:17:10

2

我想嘗試第二種方式 - 我認爲它應該工作,它應該是超級快試試吧 - 也許比要求對這裏的速度更快!

編輯:我可以證實它不起作用(至少,不是在Opera中)。 JSFiddle在http://jsfiddle.net/T7r5c/

+1

http:// jsfiddle。 net/T7r5c/1 /'elem.style.cssText'就是你以後的樣子。但內聯-css是邪惡的。只要給這兩個元素一個普通的類或通用選擇器。 – Zirak 2012-01-04 03:02:15

+0

當我看到您的評論時剛發佈了答案。我通過回答刪除。 – Sandro 2012-01-04 03:06:33

+0

同意內聯CSS是不好的。也許你的方法,PLUS複製類將是最好的選擇。取決於網站。其他選項可能是循環遍歷.style對象並單獨應用每個樣式。 Messy雖然:S – SpoonNZ 2012-01-04 03:08:48