2015-03-13 1 views
0

Мне нужно создать, украсить и добавить дочерние «div» в существующие. Например, после того, как appendChildren исполняется, после дивыЭлемент pass 'div' как параметр функции JavaScript

<div id="a"> 
     <div id="b"> 
     </div> 
    </div> 

должен принять следующий вид (при условии, decorateDiv добавляет текст «Это новый ДИВ» в новом DIV)

<div id="a"> 
     <div id="b"> 
     <div>"This is new div"</div> 
     </div> 
     <div>"This is new div"</div> 
    </div> 

Вот мой код

function appendChildren() { 
    var allDivs = document.getElementsByTagName("div"); 
    for (var i = 0; i < allDivs.length; i++) { 
    var newDiv = document.createElement("div"); 
    decorateDiv(newDiv); 
    allDivs[i].appendChild(newDiv); 
    } 
    } 


    function decorateDiv(div) { 
     var x = document.getElementByTagName("div"); 
     var t = document.createTextNode("This is new div"); 
    x.appendChild(t); 
    } 

Я совершенно не знаком с JavaSpript. Что я делаю не так? Помогите мне исправить ошибки

ответ

0

Вы не используете параметр div и decorateDiv должен выглядеть следующим образом:

function decorateDiv(div) { 
    //div is the object element 
    var t = document.createTextNode("This is new div"); 
    div.appendChild(t); 
} 
+0

Благодарим вас за разъяснение. но http://jsbin.com/sebazafoqu/1/edit?html,js,console,output - он все еще не работает – julie

+0

Он работает , но он создает бесконечную как вы можете видеть. – Xlander

+0

извините, но как я могу исправить проблему бесконечного цикла? – julie

0

Параметр «div», который вы передаете функции «decorateDiv», нигде не использовался. Вы можете изменить функцию decorateDiv вроде как ниже:

function decorateDiv(div) { 
var t = document.createTextNode("This is new div"); 
div.appendChild(t); 
} 

Надеется, что это помогает !!

0

«allDivs» обновление переменных прибудет, когда AppendChild в любой DIV, потому что хранит массив элементов «сОн» тэгу , Итак, используйте класс для выборки div.

<div id="a" class="test"> 
A 
<div id="b" class="test"> 
    B 
</div> 
</div> 

Вот пользователь сценария:

function appendChildren() { 
     var allDivs = document.getElementsByClassName("test"); 
      for (var i = 0 ; i < allDivs.length ; i++) { 
       var newDiv = document.createElement("div"); 
       decorateDiv(newDiv); 
       allDivs[i].appendChild(newDiv); 
      } 
     } 
     function decorateDiv(div) { 
      var t = document.createTextNode("This is new div"); 
      div.appendChild(t); 
     } 
     appendChildren(); 

А также вы не используете параметр, передаваемый в декоративную функцию.

Это будет работать. Попробуйте это.