2013-01-09 64 views
0

我動態地添加有一個onclick方法圖片到我的網頁如下的onclick方法:獲得一個動態生成的DOM元素

var image = document.createElement("img"); 
image.src = "image.png"; 
image.onclick = function(){ 
    doSomething(); 
} 

parent.appendChild(image); 

這一切工作正常。不過,我認爲想要通過使用onclick方法保存(通過PHP腳本)生成的HTML,。我試過使用parent.innerHTML,但同時返回圖像的onclick不在那裏。

我越來越:

...<img src="image.png" />... 

當我想要的是沿着線的東西:

...<img src="image.png" onclick="doSomething()" />... 

有人可以幫助我解決如何實現這一目標?謝謝。

+0

我敢肯定,這是不可能的。如果函數是從閉包返回的呢?如果被封裝的變量被串聯起來,它會來自哪裏? – Quentin

回答

2

這是不可能的。生活函數實例不能與其範圍環境和其他內部或公共屬性進行序列化。你只能得到它的代碼,像

image.setAttribute(
    "onclick", 
    image.onclick.toString().replace(/^function\s*([^)]*)\s*\{?|\}$|\n/g, "") 
); 
return image.outerHTML; 
1

如果要在<script>標記或外部文件中的元素屬性之外編寫腳本,它將永遠不會在HTML中複製。據我所知,你所尋找的是不可能的。

如果你直接在HTML中寫入onclick函數然後提取它,那就行了。

+0

我如何直接從Javascript寫入onclick函數到HTML中? –

+0

查看@ Bergi的答案 - 這可能是破解它的最好方法。雖然不是一個明智的做法,但... – phonicx