我发现了如何解决问题,但我无法理解问题是什么,我知道它为什么现在正在运作。
以下是有效的代码:
function onReceive(json) {
for (var i = 0; i < json.length; i++) {
var m = $("<p/>", {
"class": "message",
html: json[i].message
});
$("#messages").append(m);
}
}
我引用here:
var carName = " Volvo";
// code here can use carName
function myFunction() {
// code here can use carName
}
我的问题是,为什么这不起作用?
messages = $("#messages");
function onReceive(json) {
for (var i = 0; i < json.length; i++) {
var m = $("<p/>", {
"class": "message",
html: json[i].message
});
messages.append(m);
}
}
答案 0 :(得分:3)
我猜你在DOM准备好之前使用messages = $("#messages");
。所以当时你的javaScript无法获得$("#messages")
并且你在DOM加载后使用onReceive()
函数,所以它在你的函数内部工作。
答案 1 :(得分:2)
当元素已经成为页面的一部分时,你需要获取元素。
您可以使用文档就绪回调来包装$ call,如下所示:
$(document).ready(function () {
messages = $("#messages");
});
否则,选择器返回空集合(找不到标识为messages
的元素)。
在事件处理程序中不需要这样的包装器,因为在文档准备就绪后总是调用事件回调。