【问题标题】:How to properly append li to ul using vanilla JavaScript and Firebase?如何使用 vanilla JavaScript 和 Firebase 将 li 正确附加到 ul?
【发布时间】:2016-12-31 19:04:08
【问题描述】:

所以我确实想在我的 firebase 数据库控制台中获取我的所有消息。我的代码是纯 JavaScript。

HTML

<ul class="collection" id="chatList"></ul>

JS

var databaseRef = firebase.database().ref('messages');
var chatList = document.getElementById('chatList');
databaseRef.on('value', function(snapshot) {
  snapshot.forEach(function(childSnapshot) {
      chatList.appendChild('<li class="collection-repeat">' + childSnapshot.val().message + '</li>');
  })
});

使用我的代码,我只得到数据库中的最后一个值,因为我猜它还附加了在 foreach 中生成的另一个 &lt;li&gt;

附加&lt;li&gt; 以便它不会同时附加另一个&lt;li&gt; 的正确方法是什么?

我知道在jQuery中可以这样实现:

$('#chatList').append('<li class="collection-repeat">' + childSnapshot.val().message + '</li>')

任何帮助将不胜感激。

【问题讨论】:

  • 它甚至不能使用 jQuery 吗?
  • 它在 jQuery @mrid 中工作

标签: javascript html firebase firebase-realtime-database


【解决方案1】:

appendChild() 用于将node 附加到元素。但是您正在尝试附加string

尝试使用

var databaseRef = firebase.database().ref('messages');
var chatList = document.getElementById('chatList');
databaseRef.on('value', function(snapshot) {
    snapshot.forEach(function(childSnapshot) {
        var node = document.createElement("li");
        node.className="collection-repeat";
        var textnode = document.createTextNode( childSnapshot.val().message );
        node.appendChild(textnode);
        chatList.appendChild(node);
    })
});

【讨论】:

  • 为什么不写node.textContent = childSnapshot.val().message
猜你喜欢
  • 1970-01-01
  • 2016-09-01
  • 1970-01-01
  • 2014-01-07
  • 1970-01-01
  • 2015-05-04
  • 2013-11-20
  • 2012-08-15
  • 1970-01-01
相关资源
最近更新 更多