2011-11-16 154 views
1

我有一些AJAX,它在下面,它被添加到div使用innerHTML拉。Javascript innerHTML與onclick不工作

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

然後當我按下「添加」鏈接時,它會將「測試」添加到textareax

如果我從一開始就在文檔的HTML中,它可以很好地工作,但是當我使用AJAX將它拉入並使用innerHTML將其添加到div時,「添加」鏈接不起作用。

我認爲這可能是一個問題,因爲它有javascript,我只是使用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是一個換行符,但是已經被JavaScript解析了。該innerHTML將被設置爲:

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

不工作(語法錯誤;的JavaScript字符串不能有文字換行)。

你需要雙轉義\\r\\n,使之成爲\r\n當它由JavaScript解析(\\成爲\r將不受影響)。那麼\r\n將保存在onclick處理程序中,以便將新行確實添加到textarea: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> 

這也是一個不錯的主意截獲鼠標事件時(true轉嫁,false事件將其取消)返回一個值。