我有一个显示用户(<div id="messages"></div>
)发送的消息的div。我试图分配一个变量&#39; msg&#39;对于div中消息的价值,但不幸的是“消息”。不会注册添加到div的新消息的值。
因此,每当我输入“消息”时,进入我的控制台,它让我回来了#34; undefined&#34;即使div中有消息。
这是我到目前为止所拥有的
var msg;
document.getElementById("#messages").onchange = function () {
msg = this.textContent;
// I soon found out that this code only works for <inputs> and not <div>
}
这是消息模板
<div class="message"> + message.body + </div>
有什么建议吗?
问题是当页面加载并且我将消息发送到消息div中然后输入“消息”。在我的控制台中,我收到了#34; undefined&#34;因为变量没有注册消息div已经更改/更新。所以基本上我正在寻找一种方法,让javascript将var msg分配给#messages,以便在新的时候重新加载/更新。消息已添加。
答案 0 :(得分:2)
选中 fiddle 。你说:
我试图分配一个变量&#39; msg&#39;到的消息的价值 div,但不幸的是&#39; msg&#39;没有注册的价值 添加到div的新消息。
因此,在小提琴中,我创建了一个消息模拟,并使用jQuery中的triggerHandler
在新消息到达时将消息分配给变量msg
。您可以在此处详细了解triggerHandler
:http://api.jquery.com/triggerHandler
代码:
setTimeout(function () { // Simulating a new message after 2 seconds
$('#message').html("I am a new message!!!").triggerHandler('newMsg');
}, 2000);
var msg;
$('#message').on('newMsg', function () {
msg = $(this).html();
alert("NEW MESSAGE: " + msg);
});
答案 1 :(得分:0)
您宣布div为类名为&#39; message&#39;并尝试通过getElementById()方法访问DOM元素,这是不可能的。所以将Div类属性更改为id并更改getElementById中的参数,如下所示。
var msg;
document.getElementById("message").onchange = function () {
msg = this.textContent;
// I soon found out that this code only works for <inputs> and not <div>
}
这是消息模板
<div id="message"> + message.body + </div>
请参阅此方法 - http://www.w3schools.com/jsref/met_doc_getelementbyid.asp
答案 2 :(得分:0)
所以你有一个错字。 Class = message和函数中的消息! 但是,如果这不能解决它,请尝试跟随(jquery):
var msg;
$( "#messages" ).change(function() {
msg = this.text();
});