将'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完全陌生。我究竟做错了什么?请帮我修复错误
答
你不使用参数div
和decorateDiv
应该是这样的:
function decorateDiv(div) {
//div is the object element
var t = document.createTextNode("This is new div");
div.appendChild(t);
}
答
您传递给函数'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();
,你也没有使用传递给装饰功能参数。
这将工作。试试这个..
谢谢你的解释。但http://jsbin.com/sebazafoqu/1/edit?html,js,console,output - 它仍然不起作用 – julie 2015-03-13 07:20:25
它工作但它创造了一个无限的循环,你可以看到。 –
Xlander
2015-03-13 07:26:44
对不起,但我如何解决无限循环问题呢? – julie 2015-03-13 07:32:12