2014-11-25 31 views
0
//Display User in header 
    usersRef.child(uid).on('value', function(name){ 
    var dName = (name.val().displayName); 
    $("#userName").replaceWith("<li id=userName><span>Logged in as " + dName + "</span></li>"); 
    //Get the first Letter of the users name 
    firstLetter = dName.charAt(0); 
    //Display icon in header 
     console.log("User Image Replaced"); 
     $("#userImage").replaceWith("<li id='userImage'>" + firstLetter + "</li>"); 
    }); 

上述代码在我的网站标题中成功创建了一个用户图标。这是他们名字的第一个字母,背景是他们'用户颜色'的颜色。当他们的'用户颜色'被改变时,我想要更新标题中的图标。使用jquery从Firebase更新页面上的数据时出错

我已经得到了混合的结果,但通常它会更新第一次我改变颜色,我不得不点击它周围的页面,以便它再次执行。但并非总是如此,有时第一次不行,有时会在前三次。

我用一种引起这个问题的方式编码它,或者它是一个Firebase的东西?

+0

要替换的元素'每次有更新#userName'。因此,下次调用该函数时不会存在。尝试像$('#username')。html(...)而不是? – Kato 2014-11-25 17:19:24

+0

我一直在使用replaceWith,所以它会用更新后的html代替html,而不是在更新时重复它。 – 2014-11-26 05:56:48

回答

0

您需要将child_changed事件添加到firebase参考URL。

以下是例子:

usersRef.on("child_changed", function(snapshot) {  
     document.getElementById("username").innerHTML = udata.name; 
     document.getElementById("username").style.backgroundColor=udata.color; 
}); 

样品小提琴:http://jsfiddle.net/learningloop/ha5wncmx/19/

+0

感谢您的深入解释。虽然我仍然遇到问题,但从代码中删除时看到如何完成它是有帮助的。仅供参考我认为我的问题是关于类未被正确删除(每种颜色是一个类)。 – 2014-11-26 06:09:17

相关问题