我有一个包含用户发送的邮件更新的div。我如何为这个div分配一个javascript变量,以便它的值始终是div的当前内容,它一直用消息更新?
var x = document.getElementById("MessageBox"); // only equals value at the
// time rather than present value
答案 0 :(得分:4)
实现此目的的最简单方法是为元素分配.onchange
事件处理程序,然后将节点的值分配给函数范围之外的变量:
var myMSGvalue;
document.getElementById("MessageBox").onchange = function () {
myMSGvalue = this.value;
// this will work for <input>, not <div>
}
如果您确实需要将数据分配给html元素,则应使用<input type="hidden">
。
但是,在将数据附加到页面之前将数据分配给变量要好得多。例如,假设您有一个Web套接字:
var messages = [];
socket.on("msg", function (msg) {
messages.push(msg);
// msg: { content: "Hello!", author: "notSure" };
functionToAppendToPage(msg);
})
现在,您可以看到messages
和messages[messages.length - 1]
中收到的所有邮件都会返回收到的最后一条邮件(前提是至少收到一条邮件)。
答案 1 :(得分:3)
如果您的消息框字段使用任何Api或Ajax获取数据。您可以在将值分配给消息框之前更新变量。