0
我正在使用純JavaScript原型函數來創建一個複選框列表,並在迭代數據時追加它們。一切都是使用JavaScript和CSS創建的。 當我運行它,所以它可以繪製一個複選框列表,它會引發我一個錯誤:獲取錯誤:無法執行'節點'上的'appendChild'
"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方法中的繪製函數是:
ParaInfo.prototype.draw = function() {
this.e = new CheckBoxInput({
title: this.InfoIndividual,
float: 'left',
});
return this.e;
};
和僅供參考,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;
};
我沒有仔細檢查過,但它看起來像試圖調用將函數'letter.draw'追加到DOM節點。你不能附加功能;你只能追加DOM節點。你的意思是*調用*'letter.draw'並追加呼叫的返回值?或者你認爲'letter.draw'是'drawList'中的函數以外的東西嗎? – apsillers
@apsillers我的意思是調用letter.draw並追加調用的返回值。所以,當我調用drawList函數時,它的返回值基本上是逐個繪製複選框 – newDevGeek
'letter.draw'是對函數對象的引用。 'letter.draw()'是對函數的調用並引用其返回值。你使用第一種形式;看來你想用第二種形式代替。 – apsillers