将变量分配给更改div

时间:2015-02-07 10:23:21

标签: javascript jquery html

我有一个显示用户(<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,以便在新的时候重新加载/更新。消息已添加。

3 个答案:

答案 0 :(得分:2)

选中 fiddle 。你说:

  

我试图分配一个变量&#39; msg&#39;到的消息的价值   div,但不幸的是&#39; msg&#39;没有注册的价值   添加到div的新消息。

因此,在小提琴中,我创建了一个消息模拟,并使用jQuery中的triggerHandler在新消息到达时将消息分配给变量msg。您可以在此处详细了解triggerHandlerhttp://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(); 
});