2015-04-21 1 views
0

У меня возникли проблемы с использованием appendchild() для добавления div в div. Если возможно, я бы хотел избежать использования jquery. Я использую функции конструктора для родительского и дочернего div.Добавление дочернего div в родительский элемент динамически в конструкторе

<script> 

    var loopi = 0; 


    function codeDiv(){ 
     codeDiv1 = document.createElement("div"); 
     codeDiv1.style.height = "100px"; 
     codeDiv1.style.width = "200px"; 
     codeDiv1.style.border = "thick solid black"; 

    } 

    function functionObject(){ 
     var functionDivObject = document.createElement("div"); 
     functionDivObject.style.width = "500px"; 
     functionDivObject.style.height = "500px"; 
     functionDivObject.style.border = "thick solid black"; 
     document.body.appendChild(functionDivObject); 
     var codeDiv1 = new codeDiv(); 
     functionDivObject.appendChild(codeDiv1); //I am having the problem here 
     functionDivObject.id = "functionDiv"+loopi; 
     loopi++; 
    } 
    loopi = 0; 


    var temp = new functionObject(); 

</script> 

ответ

1

Консоль браузер должен иметь ошибку как Uncaught TypeError: Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'., так как метод appendChild() нужен опорный элемент DOM в качестве аргумента.

В вашем случае вы передаете экземпляр codeDiv.

Вы должны вернуть новый DIV от codeDiv

function codeDiv() { 
    var codeDiv1 = document.createElement("div"); 
    codeDiv1.style.height = "100px"; 
    codeDiv1.style.width = "200px"; 
    codeDiv1.style.border = "thick solid black"; 
    return codeDiv1; 

} 

Demo: Fiddle

+0

Спасибо так много. –

+0

Стоит упомянуть, что, по-видимому, нет никаких причин, по которым OP будет использовать 'new' вообще. Это просто функции, а не конструкторы, потому что нет данных или методов экземпляра. – jfriend00

+0

Зачем нам не нужно новое? это потому, что мы возвращаем элемент из функции? @ArunPJohny –

0
function codeDiv() { 
    var codeDiv1 = document.createElement("div"); 
    codeDiv1.style.height = "100px"; 
    codeDiv1.style.width = "200px"; 
    codeDiv1.style.border = "thick solid black"; 
    return codeDiv1; 

} 

    function functionObject(){ 
     var functionDivObject = document.createElement("div"); 
     functionDivObject.style.width = "500px"; 
     functionDivObject.style.height = "500px"; 
     functionDivObject.style.border = "thick solid black"; 
     document.body.appendChild(functionDivObject); 
     var codeDiv1 = codeDiv(); // call function which is returning div node 
     functionDivObject.appendChild(codeDiv1); //I am having the problem here 
     functionDivObject.id = "functionDiv"+loopi; 
     loopi++; 
    } 
Смежные вопросы