2011-05-25 156 views
0

我正在嘗試實現聊天。我想在div中顯示消息。我的模型看起來像:javascript聊天顯示消息

<div id="chatcontentcontainer"> 
    <div id="messageid"> 
     <div class="sender">sender name</div> 
     <div class="messagebody">message text</div> 
    </div> 
    ..... 
    ..... 
</div> 

和我的JavaScript看起來像:

var messages = responseXML.getElementsByTagName('ChatMessage'); 
var chatContainer = document.getElementById('chatcontentcontainer'); 
for (var i = 0; i < messages.length; i++) 
{ 
    var msg = messages[i]; 
    var x = document.createElement('div'); 
    x.id = msg.children[0].textContent; 
    x.innerHTML = msg.children[1].textContent; 
    chatContainer.appendChild(x); 
    _lastMessageId = x.id; 
} 

這填滿了沒有發送方信息的消息股利。開始只有消息。 如何更改此項以檢查消息是否已顯示?你有什麼其他建議可以顯示消息嗎?我對性能很感興趣,因爲這會每5秒刷新一次。

是否有任何其他方式選擇msg.children [0]類似msg.children ['Id']而不影響表演?

回答

0

添加到列表中的每個div都需要使用數據中存在的信息進行註釋。例如,如果每個msg都有一個id,則可以爲div分配一個child_id_ {x}的標識。

然後,您可以更改您的代碼以添加基於id的檢查以確保該元素不存在。

有意義嗎?

+0

鋤頭我可以使用JavaScript來獲得div的ID? document.getElementById是唯一的選擇嗎?我想使用聊天的div作爲根,而不是文檔對象。那可能嗎? – 2011-05-25 11:09:13

0

將時間戳或序列號與消息相關聯。從服務器返回的XML將具有從時間t0到時間t1的消息。在頁面上顯示之後,以某種方式將最後顯示的消息的時間戳存儲在瀏覽器中(本例中爲t1)。當下一組消息到達時,您只需顯示id> t1的那些消息。

implementation-of-running-commentary-on-any-ongoing-event是一個類似的問題,我在那裏給出了一個端到端的解決方案策略。你可能會發現它很有幫助。