2011-11-16 5 views
1

나는 AJAX를 가지고 있는데, 을 사용하여 div에 추가 된 다음을 가져옵니다. 내가 "추가"링크를 누르면onclick이 작동하지 않는 자바 스크립트 innerHTML

<a href="#" onclick="javascript:document.getElementById('textareax').value += '\r\nTEST';">Add</a> 

는 다음에, textareax에 "TEST"를 추가합니다.

처음부터 문서의 HTML에 포함되어 있다면 완벽하게 작동하지만 AJAX를 사용하여 이것을 넣은 후 innerHTML을 사용하여 div에 추가하면 "추가"링크가 작동하지 않습니다.

자바 스크립트가 있기 때문에 문제가 될 수 있다고 생각합니다. 다만 이것을 innerHTML을 사용하여 추가하고 있지만이를 해결하는 방법을 모르겠습니다.

+1

Ajax 요청 방법처럼 코드를 더 표시 할 수 있습니까? – talnicolas

+0

네, 그렇게한다면 이벤트 바인딩이 작동하지 않는다고 확신합니다. createElement()로 DOM을 만들고 이벤트 핸들러를 수동으로 첨부 할 수 있습니까? 그것이 내가 항상하는 방식입니다. –

+0

어제이 문제와 관련하여 매우 비슷한 질문이있었습니다. 이 질문에 대한 답변을 확인하십시오 : http://stackoverflow.com/questions/8145244/why-doesnt-browser-parse-the-js-code-in-the-file-loaded-by-ajax/8145255. 아마도 이것은 당신을 도울 수 있습니다 – GNi33

답변

2

\r\n은 개행이지만 은 이미으로 구문 분석됩니다. innerHTML로 설정됩니다 작동하지 않습니다

<a href="#" onclick="javascript:document.getElementById('textareax').value += ' 
TEST';">Add</a> 

(구문 오류, 자바 스크립트 문자열은 문자 줄 바꿈을 할 수 없습니다).

당신이 자바 스크립트 구문 분석 할 때 (\\\가되고 r은 영향을받지 않습니다) \r\n된다 그래서 \\r\\n와 더블 탈출에 필요 했어. 그런 다음 \r\nonclick 처리기에 보관되어 있으므로 줄 바꿈이 실제로 텍스트 영역에 추가됩니다 (http://jsfiddle.net/r6bhE/).

+1

고마워요! 미래의 독자를 위해 : 저는 PHP 출력에서 ​​\\ r \\ n을 사용하고 있습니다. 문제는 PHP 출력에서 ​​\ r과 \ n을 이스케이프하지 않고 있다는 것입니다. – David19801

1

onclick="javascript:document[...] 구문이 잘못되었습니다. onclick 속성은 javascript 이벤트이며 javascript 체계 표시가 필요하지 않습니다. 당신은 속성 값에 직접 스크립트를 배치 할 수 있습니다 :

<a href="#" onclick="document.getElementById('textareax').value += '\r\nTEST';">Add</a> 

그것은 (을 취소 할 false에 이벤트를 전달하는 true) 마우스 이벤트를 차단하면 값을 반환하는 것도 좋은 생각이다.

관련 문제