得到错误:无法执行' appendChild'在' Node'

时间:2014-12-30 15:51:52

标签: javascript prototype appendchild

使用纯javascript原型函数创建复选框列表,并在迭代数据时附加它们。一切都是使用javascript和css创建的。 当我运行它以便它可以绘制一个复选框列表时,它会抛出一个错误:

"Uncaught TypeError: Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'."

这一行:

results.push(this.list.appendChild(letter.draw));

我确定checkboxinput原型没有任何问题,因为它可以在其他地方正常工作。在FormTicket中做错了什么。任何人都可以帮助我做错了什么? 表单页面是FormTicket

FormTicket.prototype.respond = function(data) {
  var letter, i, len;
  this.letters = [];
  for (i = 0, len = data.length; i < len; i++) {
    letter = data[i];
    this.letters.push(new ParaInfo({
      InfoIndividual: letter
    }));
  }
  return this.drawList();
};

FormTicket.prototype.drawList = function() {
  var letter, i, len, ref, results;
  ref = this.letters;
  results = [];
  for (i = 0, len = ref.length; i < len; i++) {
    letter = ref[i];
    results.push(this.list.appendChild(letter.draw));
  }
  return results;
};

ParaInfo方法中的draw函数是:

 ParaInfo.prototype.draw = function() {
  this.e = new CheckBoxInput({
    title: this.InfoIndividual,
    float: 'left',
  });
  return this.e;
};

而且只是FYI,checkboxinput是另一个原型,部分原因如下:

CheckBoxInput.prototype.build = function(arg) {
  this.title = arg.title;
  this.float = arg.float;
};

CheckBoxInput.prototype.draw = function() {
  var box, check;
  this.item = document.createElement('div').addClass('checkboxInput');
  return this.item;
};

1 个答案:

答案 0 :(得分:0)

解决了它。需要调用“.draw()。draw()” 即最初只调用ParaInfo的.draw()。添加了另一个“.draw()”,它调用CheckBoxInput的绘制。正确的追加要求:

  results.push(this.list.appendChild(letter.draw().draw()));

感谢用户apsillers的宝贵意见。