2013-04-18 54 views
1

我需要您的幫助來解決我遇到的問題。 我有這樣的代碼:無法將div插入另一個內部div

<div id="div1" > 
    <div id="edit1"> 
     hello 
     <input type="button" id="b1" onclick="aaa()"/> 
    </div> 
</div> 

我想用插入到內部的div(ID = EDIT1)我產生另一種新的div。

我試過一樣的代碼,但它沒有運行:

js: 
function aaa() 
{ 
    var elem = createDivLine(); 
    var el1 = document.getElementById("div1"); 
    var el2 = el1.getElementById("edit1"); 
    el2.appendChild(elem); 
} 

function createDivLine() 
{ 
    var tempDiv1 = document.createElement("div"); 
    tempDiv1.innerHTML = "Sam"; 
    return tempDiv1; 
} 

的結果應該是這樣的:

<div id="div1" > 
    <div id="edit1"> 
     hello 
     <input type="button" id="b1" onclick="createDivTable()"/> 
     <div>"Sam"</div> 
    </div> 
</div> 

的jsfiddle:http://jsfiddle.net/KknXF/

+2

你說的 「它沒有運行」 是什麼意思? –

+0

您應該嘗試使用jQuery。這對你的問題非常簡單。去檢查一些jQuery的教程。 – Harpreet

+0

函數'createDivTable()'在哪裏? – techfoobar

回答

5

由於ID都是唯一的,它是無效的嘗試通過ID獲取元素的孩子。

刪除此行:

var el1 = document.getElementById('div1'); 

並更改以下行:

var el2 = document.getElementById('edit1'); 

在你有一些irrepairably事件(我永遠不會拼寫單詞...)破HTML你不可能改變,試試這個:

var el2 = document.querySelector("#div1 #edit1"); 
+0

+1這是真正的問題。但是'.querySelector(「#div1#edit1」)看起來很糟糕。 – VisioN

+0

@VisioN是的。我只是爲了覆蓋這種情況纔將其列入,以防萬一有理由試圖通過身份證獲得孩子。如果可能的話,當然應該避免。 –

+1

HTMLElement也沒有getElementById方法。 – hazzik

0

應該

function aaa() { 
    var elem = createDivLine(); 
    var el2 = document.getElementById("edit1"); 
    el2.appendChild(elem); 
} 

演示:Fiddle