我需要动态地在DIV元素中设置文本 . 什么是最好的浏览器安全方法?我有prototypejs和scriptaculous可用 .
<div id="panel">
<div id="field_name">TEXT GOES HERE</div>
</div>
这是函数的样子:
function showPanel(fieldName) {
var fieldNameElement = document.getElementById('field_name');
//Make replacement here
}
13 回答
我会使用Prototype的
update
方法,它支持纯文本,HTML片段或任何定义toString
方法的JavaScript对象 .你可以简单地使用:
Updated for everyone reading this in 2013 and later:
这个答案有很多搜索引擎优化,但所有的答案都严重过时,并依赖于图书馆来做所有当前浏览器开箱即用的事情 .
To replace text inside a div element, use Node.textContent, which is provided in all current browsers.
这样做的好处是:
它只使用DOM,因此该技术可以移植到其他语言,并且不依赖于非标准的innerHTML
fieldName可能包含HTML,可能是尝试的XSS攻击 . 如果我们知道它只是文本,我们应该创建一个文本节点,而不是让浏览器为HTML解析它
如果我打算使用javascript库,我会使用jQuery,并执行以下操作:
请注意@AnthonyWJones' comment是正确的:"field_name"不是特别描述性的ID或变量名称 .
Prototype的一个漂亮功能是
$('field_name')
与document.getElementById('field_name')
做同样的事情 . 用它! :-)John Topley 's answer using Prototype' s
update
功能是另一个很好的解决方案 .快速回答是使用innerHTML(或原型的更新方法,这几乎是一样的) . innerHTML的问题是您需要转义所分配的内容 . 根据您的目标,您需要使用其他代码OR
在IE中: -
在FF: -
(实际上FF的代码中有以下内容)
现在我可以使用innerText,如果你需要尽可能广泛的浏览器支持,那么这不是一个完整的解决方案,但是在raw中都没有使用innerHTML .
如果你真的希望我们继续你离开的地方,你可以这样做:
nodeValue也是您可以使用的标准DOM属性:
如果您倾向于开始在您的网站上使用大量JavaScript,那么jQuery使得使用DOM非常简单 .
http://docs.jquery.com/Manipulation
使其简单如下:$(“#field-name”) . text(“some new text . ”);
这是一个简单的jQuery方式:
如果你不能假设结构,请使用innerText - 使用Text#data更新现有文本Performance Test