如何使用html按钮和javascript函数从firebase删除节点

时间:2019-05-12 05:33:25

标签: javascript html web firebase-realtime-database

这是我当前的网络数据: current output

我无法调用javascript函数进行delete()。 因为我的按钮附加在html中。我的onclick无法正常工作

var query = firebase.database().ref("Feedback").orderByKey();
query.once("value")
    .then(function(snapshot) {
        snapshot.forEach(function(feedbackSnapshot) {
           var uid = feedbackSnapshot.key;
            feedbackSnapshot.forEach(function(childSnapshot) {
                var key = childSnapshot.key;
                var TicketNo = childSnapshot.child("feedID").val();
                var Subject = childSnapshot.child("feedSubject").val();
                var Message = childSnapshot.child("feedMessage").val();
                var deleteRef = "Delete(key,uid)";

                $("#feedback_table").append(
                    "<tr><td>"+Message+"</td><td>"+Subject+"</td><td>"+TicketNo
                    +"</td><td><button onclick="+deleteRef+">Remove</button></td><td style='display:none;'>"+uid
                    +"</td><td style='display:none;'>"+key+"</td></tr>");
            });
    });
});

这是我的删除功能:

  function Delete(key,uid){
      var feedRef = firebase.database.ref("Feedback").child(uid).child(key);
      feedRef.remove()
      .then(function(){
        console.log("Remove succeeded.")
      })
      .catch(function(error){
        console.log("Remove Failed!"+error.message)
      });
  }

2 个答案:

答案 0 :(得分:0)

问题在此行上:

var deleteRef = "Delete(key,uid)";

因此,请不要将其替换为:

var deleteRef =“ Delete(” + key +“,” + uid +“)”;

它肯定会起作用,因为现在我们实际上是在为其提供值的同时提供对deleteRef变量的引用。

答案 1 :(得分:0)

在附加HTML而不是引号并引用此类函数时,可以使用ES6模板文字。

顺便说一句,以大写字母开头的函数通常表示该函数为一类。您应该以小写形式命名函数(函数Delete(key,uid)应该是函数delete(key,uid))

$("#feedback_table").append(
`<tr><td>${Message}</td><td>${Subject}</td><td>${TicketNo}
</td><td><button onclick="delete(${key}, ${uid} );">Remove</button></td>
<td style='display:none;'> uid </td><td style='display:none;'>${i}</td></tr>`);