2015-02-07 5 views
2

사용자가 보낸 메시지를 표시하는 div가 있습니다 (<div id="messages"></div>). div에있는 메시지의 값에 'msg'변수를 할당하려고하지만 불행히도 'msg'는 div에 추가 된 새 메시지의 값을 등록하지 않습니다.변경 div에 변수 할당

결과적으로 div에 메시지가 있어도 'msg'를 내 콘솔에 입력하면 "undefined"라는 메시지가 다시 나타납니다.

이것은 내가 지금까지 여기에

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가 변경되었다는 것을 등록하지 않았기 때문에 "undefined"라는 메시지가 나타납니다./updated. 그래서 기본적으로 새로운 .message가 추가 될 때 javascript가 var msg를 #messages에 할당하여 다시로드/업데이트하는 방법을 찾고 있습니다.

+0

가능한 중복 (http://stackoverflow.com/questions/1091661/detect-element-content 현재 triggerHandler에 대한 자세한 내용을보실 수 있습니다 -changes-with-jquery) –

답변

2

확인이 fiddle. 당신은 말했다 :

내가 에 사업부를 메시지의 값으로 변수 'MSG'를 지정하기 위해 노력하고있어하지만 불행히도 'MSG'가 추가 된 새 메시지의 값을 등록하지 않습니다 div.

그래서 바이올린에, 나는 메시지 시뮬레이션을 생성하고 새 메시지가 도착하면, 변수에 msg을 메시지를 할당 jQuery를에서 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

+0

경고 메시지가 나타나면 질문이 있습니다. 예를 들어, '

hi my name is tomy
'과 같은 메시지가 첨부 된 div와 함께 표시됩니다. 텍스트 콘텐츠 만 얻을 수있는 방법이 있습니까? Thanks – KingAlfredChameleon

+1

'msg'의 값이'# message'의'html()'과 같기 때문입니다. 실제로 메시지를 담고있는'div' 만 선택하십시오. 'msg = $ ('. message') .html();'을 시도해 볼 수 있습니다. 이렇게하면 "_hi my name is tomy_"이 (가) 반환됩니다. – Preetesh

0

div라는 클래스 이름을 'message'로 선언했으며 getElementById() 메소드로 DOM 요소에 액세스하려고했지만 불가능했습니다. Div 클래스 속성을 id로 변경하고 getElementById의 매개 변수를 이와 같이 변경하십시오.

+0

div 클래스 "message"는 id "messages"가있는 div에 넣어 둡니다. – KingAlfredChameleon

+0

그 번호를 제거하고 다시 시도 할 수 있습니까? –

+0

업데이트 된 질문 – KingAlfredChameleon

0

http://www.w3schools.com/jsref/met_doc_getelementbyid.asp 그래서 당신은 오타가 - 여기

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> 

이 방법에 대해 참고 메시지 템플릿을합니다. 클래스 = 메시지와 함수의 메시지! 그러나 그것은 (JQuery와) 다음과 같은 시도가 해결되지 않는 경우

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

업데이트 된 질문 – KingAlfredChameleon