我想知道是否有办法在不使用innerHTML的情况下更改HTML中的任何内容.
我问的原因是因为它对W3C有点不满意.我知道这是挑剔,但我只是想知道,有办法吗?
编辑:人们似乎误解了我在这里问的问题:我想找到一种方法来有效地改变正在显示的文本.
如果我有:
OneinnerHTML允许我这样做:
var text = document.getElementsById("one"); text.innerHTML = "Two";我屏幕上的文字会发生变化.
我不想附加更多文字,我希望改变现有的文字.
1> Turnor..:推荐的方法是通过DOM操作,但它可能非常冗长.例如:
//Hello, World!
var para = document.createElement('p'); para.appendChild(document.createTextNode('Hello, ')); // var b = document.createElement('b'); b.appendChild(document.createTextNode('World'); para.appendChild(b); para.appendChild(document.createTextNode('!')); // Do something with the para element, add it to the document, etc.编辑
为了响应您的编辑,为了替换当前内容,您只需删除现有内容,然后使用上面的代码填写新内容.例如:
var someDiv = document.getElementById('someID'); var children = someDiv.childNodes; for(var i = 0; i < children.length; i++) someDiv.removeChild(children[i]);但正如其他人所说的那样,我建议使用类似jQuery的东西,因为并非所有浏览器都完全支持DOM,而那些确实存在由JavaScript库内部处理的怪癖.例如,jQuery看起来像这样:
$('#someID').html("Hello, World!
");
jQuery在代码中多次使用innerHTML,因此建议使用jQuery以避免使用innerHTML对IMHO没有多大意义.
其他方式:)他们的观点是,使用innerHTML,可以将无效标记插入XML/XHTML文档.尽管如此,他们似乎已经用HTML5改变了主意.
2> Andrew Hare..:更好的方法是使用
document.createTextNode
.使用此函数的主要原因之一innerHTML
是,所有HTML字符转义都将为您处理,而如果您只是设置,则必须自己转义字符串innerHTML
.
但是,似乎innerHTML比W3C DOM方法快得多:http://www.quirksmode.org/dom/innerhtml.html.
这取决于你在做什么; 说一种方法更好的方法是误导的.当对许多元素进行childNode列表操作时,DOM往往会变慢(趋向于O(n²)),而innerHTML可以一次完成所有这些操作.但是innerHTML的解析/序列化步骤可以使其他操作变慢.
3> Bill the Liz..:您可以通过操纵DOM获得相同的效果.更改文本的最安全方法是删除元素的所有子节点,并用新的文本节点替换它们.
var node = document.getElementById("one"); while( node.firstChild ) node.removeChild( node.firstChild ); node.appendChild( document.createTextNode("Two") );在用新文本替换之前,删除子节点会删除元素的文本内容.
大多数开发人员避免使用innerHTML的原因是通过DOM访问元素符合标准.
4> Ionuț G. Sta..:如果您只想更改纯文本,那么有一个更快的解决方案依赖于标准:
document.getElementById("one").firstChild.data = "two";无论如何,请注意innerHTML将成为即将推出的HTML 5标准的一部分.
5> 小智..:简单.
替换
text.innerHTML = 'two'
为text.firstChild.nodeValue = 'two'
.推荐阅读
如何解决《窃取ParallelComputingToolbox的工作》经验,为你挑选了1个好方法。 ... [详细] 如何解决《使用按钮启动此计时器》经验,为你挑选了1个好方法。 ... [详细] 如何解决《如何使用asyncio添加连接超时?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《添加新处理程序以运行pythontornado服务器》经验,为你挑选了1个好方法。 ... [详细] 如何解决《字符串数组到java中的ArrayList问题》经验,为你挑选了1个好方法。 ... [详细] 如何解决《gradle中'all'和'each'之间有什么区别?》经验,为你挑选了0个好方法。 ... [详细] 如何解决《哪一个应该使用,语义标签或表示?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《Botan编译错误VS2015》经验,为你挑选了1个好方法。 ... [详细] 如何解决《使用DOMElements的THREE.jsSphereGeometryPanorama热点》经验,为你挑选了0个好方法。 ... [详细] 如何解决《将xml字符串反序列化为对象》经验,为你挑选了1个好方法。 ... [详细] 如何解决《NodeJSx-rayweb-scraper:如何关注链接并从子页面获取内容》经验,为你挑选了1个好方法。 ... [详细] 如何解决《永久添加蜂巢罐》经验,为你挑选了1个好方法。 ... [详细] 如何解决《将字符串连接到数据库中的现有字符串》经验,为你挑选了1个好方法。 ... [详细] 如何解决《使用中间变量而不是array.length会使你的for循环变得更快吗?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《增强了对新跟踪器的电子商务分析跟踪》经验,为你挑选了1个好方法。 ... [详细] 如何解决《从二叉树中随机选择一个节点》经验,为你挑选了2个好方法。 ... [详细] 如何解决《如何根据子集函数从数据框中删除行?》经验,为你挑选了0个好方法。 ... [详细] 如何解决《多个html页面一个js文件?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《Highcharts:UncaughtTypeError:$().highcharts不是函数》经验,为你挑选了2个好方法。 ... [详细] 如何解决《R数据帧轻松导出和表格格式化为Word?》经验,为你挑选了2个好方法。 ... [详细]吐了个 "CAO" !Tags | 热门标签RankList | 热门文章
- 1在单页网站上替换Div的内容
- 2如何在spring项目中使用自定义anotation(hibernate)加密/解密数据
- 3Docker 1.9中配置文件的位置是什么?
- 4MapReduce示例
- 5从类型中获取DbSet
- 6当引用相同的变量时,Swift Array内存地址会发生变化
- 7这个方法会被调用吗?(仍需要一个可接受的答案......详见答案)
- 8如何禁止访问除.well-已知的所有点目录?
- 9XCode Simulator:如何更改其快捷方式?
- 10loc和ix之间的意外差异
- 11只发布控制器
- 12未捕获的TypeError:无法读取未定义的属性'__SECRET_DOM_DO_NOT_USE_OR_YOU_WILL_BE_FIRED'
- 13自定义HTML5表单验证错误仅在首次尝试后发生
- 14在Ionic框架中启用Android版Multidex
- 15如何限制用户在ui-ace编辑器中只编写一个javascript函数(方法)
- 16将第一行作为下一行哈希的键?
- 17matplotlib图只显示点而不是线
- 18如何在GADT配方AST中指定异源集合的类型?
- 19将SonarQube的端口更改为80
- 20Adventure Works访问客户信息
DevBox开发工具箱 | 专业的在线开发工具网站 京公网安备 11010802040832号 | 京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有