如何在innerHTML中插入换行符

时间:2014-03-30 05:54:45

标签: ajax innerhtml line-breaks

我正在使用ajax更新某些表单字段。

其中一个字段如下

<td id='alarms_id'></td>

在文件update.js.erb中,我有以下内容:

alert('<% concat @alarms %>')
document.getElementById("alarms_id").innerHTML = '<% concat @alarms %>'

在控制器中,如果我执行以下操作(用于测试目的)

@alarms = "Hello World!"

一切都会正常工作,我会看到警告弹出窗口,我看到该字段显示&#34; Hello World!&#34;信息。但在我的实际应用中,我希望所有警报都在不同的行中,所以我尝试了这个:

@alarms = "Hello \n World!"

但是我没有看到警告消息,我的字段没有更新(没有显示Hello World消息)。我尝试过Firefox和Safari,但没有人能为我工作。

任何人都明白我做错了什么,我怎样才能得到&#34; Hello World!&#34;消息显示在2个单独的行中?

3 个答案:

答案 0 :(得分:0)

在HTML中,您可以像这样写一个换行符:<br/>而不是\n

答案 1 :(得分:0)

而不是@alarms = "Hello \n World!"您是否尝试过@alarms = "Hello <br> World!"

答案 2 :(得分:0)

Ruby on Rails 中,您可以通过多种方式实现:

使用html_safe标记您的HTML变量:

@alarms = "Hello <br/> World!".html_safe
document.getElementById("alarms_id").innerHTML = 'concat <%= @alarms %>';

或使用html_safe显示您的HTML变量:

@alarms = "Hello <br/> World!"
document.getElementById("alarms_id").innerHTML = 'concat <%= @alarms.html_safe %>';

或使用raw显示您的HTML变量:

@alarms = "Hello <br/> World!"
document.getElementById("alarms_id").innerHTML = 'concat <%=raw @alarms %>';

请注意,JavaScript中的alert()函数不理解HTML代码,因此您无法使用它来按原样显示HTML变量。