javascript - 函数内部循环不会将内容附加到父级

标签 javascript function for-loop appendchild setattribute

我正在尝试使用函数内的循环将内容附加到父元素。 我想将几个 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)一起使用

最佳答案

derp是一个无用的变量,它保存head(newEl的返回值),使其发挥作用并在loopo内部调用

var derp = function(){
  return newEl(head, 'div', someAttributes, someText);
};

function loop(num, content) {
  for(var i = 0; i < num; i++)  {
    content(); // <== call function derp here
    console.log('derp');
  }
}

loop(3, derp);

关于javascript - 函数内部循环不会将内容附加到父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37639486/

相关文章:

php - 有没有办法通过 PHP 自动将 XML 页面转换为 JSON?

java - 如何获得可以为正值也可以为负值的随机值?

javascript - 如何在 Javascript 中为激光游戏生成关卡?

javascript - 为什么我的 jQuery SlideDown 动画滞后/跳跃?

javascript - 函数中的按钮 onclick

javascript - Function.prototype.__proto__ 是什么意思?

c++ - 返回指向局部变量的指针总是未定义的行为

c - 使用二维数组,我的数组没有出现

python - 在 python 中是否有更简单的方法来编写 6 个嵌套的 for 循环?

javascript - 如何根据输入有条件地隐藏输入表单的某些部分?