我需要动态设置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
}
答案 0 :(得分:239)
您可以简单地使用:
fieldNameElement.innerHTML = "My new text!";
答案 1 :(得分:151)
更新了2013年及以后阅读此内容的所有人:
这个答案有很多搜索引擎优化,但所有答案都严重过时,并依赖图书馆来做所有当前浏览器开箱即用的事情。
fieldNameElement.textContent = "New text";
答案 2 :(得分:74)
function showPanel(fieldName) {
var fieldNameElement = document.getElementById("field_name");
while(fieldNameElement.childNodes.length >= 1) {
fieldNameElement.removeChild(fieldNameElement.firstChild);
}
fieldNameElement.appendChild(fieldNameElement.ownerDocument.createTextNode(fieldName));
}
这样做的好处:
如果我打算使用javascript库,我会使用jQuery,并执行此操作:
$("div#field_name").text(fieldName);
请注意@AnthonyWJones' comment是正确的:“field_name”不是特别描述性的ID或变量名称。
答案 3 :(得分:46)
我会使用Prototype的update
方法,该方法支持纯文本,HTML代码段或定义toString
方法的任何JavaScript对象。
$("field_name").update("New text");
答案 4 :(得分:17)
$('field_name').innerHTML = 'Your text.';
Prototype的一个漂亮功能是$('field_name')
与document.getElementById('field_name')
做同样的事情。用它! : - )
John Topley使用Prototype update
函数的答案是另一个很好的解决方案。
答案 5 :(得分:15)
快速回答是使用innerHTML(或原型的更新方法,这几乎是一样的)。 innerHTML的问题是您需要转义所分配的内容。根据您的目标,您需要使用其他代码执行此操作或
IE中的: -
document.getElementById("field_name").innerText = newText;
FF中的: -
document.getElementById("field_name").textContent = newText;
(实际上FF的代码中有以下内容)
HTMLElement.prototype.__defineGetter__("innerText", function () { return this.textContent; })
HTMLElement.prototype.__defineSetter__("innerText", function (inputText) { this.textContent = inputText; })
现在我可以使用innerText,如果你需要尽可能广泛的浏览器支持,那么这不是一个完整的解决方案,但它们都没有在raw中使用innerHTML。
答案 6 :(得分:6)
如果你真的希望我们继续你离开的地方,你可以这样做:
if (fieldNameElement)
fieldNameElement.innerHTML = 'some HTML';
答案 7 :(得分:4)
nodeValue也是您可以使用的标准DOM属性:
function showPanel(fieldName) {
var fieldNameElement = document.getElementById(field_name);
if(fieldNameElement.firstChild)
fieldNameElement.firstChild.nodeValue = "New Text";
}
答案 8 :(得分:3)
el.innerHTML='';
el.appendChild(document.createTextNode("yo"));
答案 9 :(得分:1)
如果您倾向于开始在您的网站上使用大量JavaScript,那么jQuery使得使用DOM非常简单。
http://docs.jquery.com/Manipulation
使其简单如下: $(“#field-name”)。text(“some new text。”);
答案 10 :(得分:1)
如果您不能假设结构,请使用innerText - 使用Text#data更新现有文本 Performance Test
答案 11 :(得分:0)
function showPanel(fieldName) {
var fieldNameElement = document.getElementById(field_name);
fieldNameElement.removeChild(fieldNameElement.firstChild);
var newText = document.createTextNode("New Text");
fieldNameElement.appendChild(newText);
}
答案 12 :(得分:0)
这是一种简单的jQuery方式:
var el = $('#yourid .yourclass');
el.html(el.html().replace(/Old Text/ig, "New Text"));
答案 13 :(得分:0)
在HTML中放入
<div id="field_name">TEXT GOES HERE</div>
在Javascript中放这个
var fieldNameElement = document.getElementById('field_name');
if (fieldNameElement)
{fieldNameElement.innerHTML = 'some HTML';}