2015-02-02 3 views
0

У меня есть div, который содержит обновления сообщений, отправленные пользователями. Как я могу назначить переменную javascript этому div, так что это значение всегда является текущим содержимым div, которое постоянно обновляется с сообщениями?Создание переменной javascript для динамического элемента

var x = document.getElementById("MessageBox"); // only equals value at the 
// time rather than present value 
+0

где и как вы получаете новые данные? –

+0

опросить его, чтобы получить значения для определенного интервала. Вы не можете получить значения, как ссылки на элемент div в одной переменной. –

+0

Либо вы можете добавить блок сценария после обновляемой области html и присвоить новое значение переменной, либо добавить на свою страницу опрос, который постоянно отслеживает изменение значения. –

ответ

4

Самый простой способ сделать это было бы назначить обработчик .onchange событий для элемента, а затем присвоить значение узла переменной, проводимых вне сферы действия функции:

var myMSGvalue; 
document.getElementById("MessageBox").onchange = function() { 
    myMSGvalue = this.value; 
    // this will work for <input>, not <div> 
} 

Если вам действительно нужно назначьте свои данные элементу html, вы должны использовать <input type="hidden">.

Однако было бы гораздо лучше назначить данные переменной перед добавлением ее на страницу. Например, предположим, что у вас есть веб-сокет:

var messages = []; 
socket.on("msg", function (msg) { 
    messages.push(msg); 
    // msg: { content: "Hello!", author: "notSure" }; 
    functionToAppendToPage(msg); 
}) 

Теперь вы можете увидеть все сообщения, полученные в messages и messages[messages.length - 1] возвращает последнее полученное сообщение (при условии, по крайней мере, одно сообщение было получено).

+0

Typo в обработчике. 'msMSGvalue' – Jeff

+1

ли div поддерживать событие обмена? Я думаю, что он поддерживает только , , , , , , , ,