使用纯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;
};
答案 0 :(得分:0)
解决了它。需要调用“.draw()。draw()” 即最初只调用ParaInfo的.draw()。添加了另一个“.draw()”,它调用CheckBoxInput的绘制。正确的追加要求:
results.push(this.list.appendChild(letter.draw().draw()));
感谢用户apsillers的宝贵意见。