将'div'元素作为参数传递给JavaScript函数

问题描述:

我需要创建,装饰并将子div'添加到现有的元素。例如,在执行appendChildren后,下面的div将'div'元素作为参数传递给JavaScript函数

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

应采取以下形式(假设decorateDiv添加文本“这是新的div”里新的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完全陌生。我究竟做错了什么?请帮我修复错误

你不使用参数divdecorateDiv应该是这样的:

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 2015-03-13 07:20:25

+0

它工作但它创造了一个无限的循环,你可以看到。 – Xlander 2015-03-13 07:26:44

+0

对不起,但我如何解决无限循环问题呢? – julie 2015-03-13 07:32:12

您传递给函数'decorateDiv'的参数'div'没有被使用过。 您可以更改像下面的decorateDiv功能:

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

希望这有助于!

“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(); 

,你也没有使用传递给装饰功能参数。

这将工作。试试这个..