我正在尝试使用Firebase向我的数据库添加一个监听器。
const dbRef=firebase.database().ref().child('messages');
dbRef.on('child_added', MS.bringData);
添加内容后,我执行bringData
,从message
对象创建一个名为snap
的新对象。
export const bringData = (snap) => {
const message1=new Message(snap.val().objet, snap.val().message, snap.val().etat, snap.val().key);
message1.creerLigne();
}
然后我从课程creerLigne()
拨打Message
,创建新行并将其添加到tbody
creerLigne() {
const arg=[this._objet, this._message, this._etat, this._id];
const row=document.createElement("tr");
row.setAttribute('id', this._id);
const data=document.createElement("td");
var checkB=document.createElement("input").setAttribute('type', 'checkbox', 'name', 'delete');
var i=0;
while(i<arg.length-1) {
let data1=data.cloneNode();
let text=document.createTextNode(arg[i]);
data1.appendChild(text);
row.appendChild(data1);
i++;
}
data1.appendChild(text);
row.appendChild(data1);
row.appendChild(checkB.cloneNode());
document.body.appendChild('row');
}
但不幸的是我收到了以下错误:
FIREBASE WARNING: Exception was thrown by user callback. TypeError: Cannot read property 'cloneNode' of undefined
at Message.creerLigne
答案 0 :(得分:0)
var checkB=document.createElement("input").setAttribute('type', 'checkbox', 'name', 'delete');
应该是
var checkB=document.createElement("input");
checkB.setAttribute('type', 'checkbox');
checkB.setAttribute('name', 'delete');
.setAttribute
不返回元素,只需要两个参数。
答案 1 :(得分:0)
creerLigne(){
const arg=[this._objet,this._message,this._etat,this._id];
const row=document.createElement("tr");
row.setAttribute('id',this._id);
const data=document.createElement("td");
const checkB = document.createElement("input");
checkB.setAttribute('type','checkBox');
checkB.setAttribute('name','delete');
let i=0;
while(i<arg.length-1)
{
const data1=data.cloneNode();
var text=document.createTextNode(arg[i]);
data1.appendChild(text);
row.appendChild(data1);
i++;
}
row.appendChild(checkB.cloneNode());
const table= document.querySelector('table');
table.appendChild(row);
}