2015-02-07 49 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