【发布时间】:2016-06-05 07:27:35
【问题描述】:
我正在尝试使用函数内的循环将内容附加到父元素。 我想将几个 div 附加到一个元素,但(显然)希望能够灵活地更改类名、文本等内容。 这是我的代码:
var head = document.getElementById('head');
var someText = "Hello, World";
var someAttributes = [['class', 'blue'], ['id', 'footer'], ['name', 'bunk']];
function createEl(tag, parent) {
var newElement = document.createElement(tag);
return parent.appendChild(newElement);
}
function addText(text, parent) {
return parent.textContent = text;
}
function addAttribute(attributes, parent) {
for(var i = 0; i < attributes.length; i++) {
parent.setAttribute(attributes[i][0], attributes[i][1]);
}
}
function newEl(parent, element, attr, text) {
var el = createEl(element, parent);
addText(text, el);
addAttribute(attr, el);
return parent;
}
var derp = newEl(head, 'div', someAttributes, someText);
function loop(num, content) {
for(var i = 0; i < num; i++) {
content;
console.log('derp');
}
}
loop(3, derp);
如果我将它更改为以下内容,我可以让它工作:
function loop(num, a, b, c, d) {
for(var i = 0; i < num; i++) {
content newEl(a, b, c, d);
console.log('derp');
}
}
loop(3, head, 'div', someAttributes, someText);
为什么它不适用于loop(3, derp)
【问题讨论】:
-
问题是……?
-
OP 不能使用
derp作为loop的参数。 @mcnutty,您应该编辑问题以使这一点更清楚。只需添加这样一句话:“为什么它不适用于loop(3, derp)?
标签: javascript function for-loop appendchild setattribute