2015-02-07 47 views
2

我有一个显示用户发送的消息的分区(<div id="messages"></div>)。我试图给div中的消息赋值一个变量'msg',但不幸的是'msg'没有注册添加到div的新消息的值。分配变量以更改div

因此,每次我在控制台中键入'msg'时,即使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,然后在我的控制台中输入'msg',我收到“未定义”,因为该变量未注册,消息div已更改/更新。所以基本上我正在寻找一种方式,为JavaScript添加新的.message时将var msg分配给#messages以重新加载/更新。

+0

可能重复(http://stackoverflow.com/questions/1091661/detect-element-content -changes-with-jquery) – 2015-02-07 10:43:53

回答

2

入住这fiddle。你说:

我试图分配一个变量“味精”的消息的价值 股利可惜“味精”没有注册加入该 新的消息的价值DIV。

所以在小提琴,我创建了一个消息,模拟和使用jQuery的距离的triggerHandler到消息当有新邮件到达时赋给变量,msg。你可以阅读更多关于triggerHandler这里:http://api.jquery.com/triggerHandler

代码:的[检测与jQuery元素含量变化]

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); 
}); 
+0

我非常感谢Preetesh,非常感谢。 – KingAlfredChameleon 2015-02-07 11:50:02

+0

我有一个问题,当警报出现时,它会显示消息以及其附带的div,'

hi my name is tomy
'有没有一种方法可以只获取文本内容?谢谢 – KingAlfredChameleon 2015-02-07 12:07:49

+1

这是因为'msg'的值等于'#message'的'html()'。只选择实际包含该消息的'div'。你可以尝试:'msg = $('。message')。html();'。这将返回“_hi我的名字是tomy_”。 – Preetesh 2015-02-07 12:13:36

0

您将class声明为div作为'message'并试图通过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

+0

我应该更清楚了,div类“消息”被放入带有“消息”ID的div中。 – KingAlfredChameleon 2015-02-07 10:36:56

+0

你可以删除#并再试一次 – 2015-02-07 10:42:37

+0

更新的问题 – KingAlfredChameleon 2015-02-07 10:50:14

0

所以,你有一个错字。类=消息和函数中的消息! 但是,如果不解决这个问题尝试以下(jQuery的):

var msg; 
$("#messages").change(function() { 
    msg = this.text(); 
}); 
+0

更新的问题 – KingAlfredChameleon 2015-02-07 10:51:06