javascript实例菜鸟教程(javascript如何实现字符串动态创建dom实例详解)

本文目录
javascript如何实现字符串动态创建dom实例详解
在javascript里面动态创建标准dom对象一般使用:
var obj = document.createElement(’p’);然后再给obj设置一些属性。
但是,在实际使用过程中,有些人可能会想,要是能这样创建标准的dom对象就好了
伪代码:var obj=strToDom(’《p id="p_1" class="p1"》Hello World!《/p》’);
那么今天的目的就是教大家怎么去实现一个这样的方法用来把字符串直接转换为标准的dom对象
start:
其实实现这样的一个转换是很简单的,这里主要是利用了一个属性innerHTML.
innerHTML,我相信大家都使用过,特别是动态往一个元素里面插内容时使用,这里我还是在介绍下innerHTML,方便于还不太熟悉的人。
innerHTML不是w3c标准,是由ie发明创造出来的,但是由于这个属性的方便性,和当时微老大的地位,其它非ie浏览器也内置了innerHTML并给出了支持。
虽然innerHTML不是w3c标准,但是却是一个事实标准,这个事实标准很重要,也就是目前主流浏览器都支持innerHTML,自然就做到了兼容多浏览器。
function parseDom(arg) {
var objE = document.createElement("p");
objE.innerHTML = arg;
return objE.childNodes;
};短短几行代码就实现了转换,我们首先用标准的方法创建一个p出来,在用innerHTML来插入一个元素,其实也就是利用浏览器自己的内核算法来实现的一个转换。在用childNodes返回出来。
这样我们就完成了一个字符串到标准dom的转换,巧妙的利用浏览器本身的算法,可以用简单少量的代码来完成大量复杂的转换,我们不用去解析字符串,而是交给浏览器自己来完成,这样既准确又无误。
使用:
var obj=parseDom(’《p id="p_1" class="p1"》Hello World!《/p》’);
var obj=parseDom(’《p id="p_1" class="p1"》Hello World!《/p》《span》多个也没关系《/span》’);注意:
childNodes返回的是一个类似数组的list。所以如果是一个元素,要使用这个dom需要这样使用obj?
JavaScript中如何创建、使用和删除dom节点实例详解
创建节点
为了创建一个新的节点,可以使用createElement和createTextNode.如果新建完成,可以用appendChild()把节点添加到DOM树中。
创建一个元素P,并把设置innerHTML属性
元素P建完成了,就可以随意修改添加属性了
接下来可以用appendChild把新的节点添加到DOM树中的。
使用DOM的方法
用innerHTML方法的确很简单,我们可以用纯的dom方法来实现上面的功能。
新建一个文本节点(yet another)
新建一个段落
把文本节点添加到段落中。
把段落添加到body中
另一种新建节点的方法是,我们可以用cloneNode来复制一个节点。cloneNode()可以传入一个boolean参数。如果为true就是深度复制,包括他的子节点,false,仅仅复制自己。
首先获取要复制的元素。
先不用深度复制。
我们发现页面并没有变化,因为仅仅复制的是元素p。和下面的效果一样。
如果用深度复制,包括p下面所有的子节点都会被复制。当然包括文本节点和EM元素。
insertBefore()
用appendChild,就是把元素添加到最后。而insertBefore方法可以更精确控制插入元素的位置。
实例
意思就是新建一个文本节点,把它作为body元素的第一个节点。
删除节点
要从DOM树删除一个节点,我们可以使用removeChild().我们来看看要操作的HTML
《body》
《p class="opener"》first paragraph《/p》
《p》《em》second《/em》 paragraph《/p》
《p id="closer"》final《/p》
《!-- and that’s about it --》
《/body》来看看下面代码,删除第二段
removed节点就是删除的节点。以后还可以用这删除的节点。
我们也可以用replaceChild()方法。这个方法是删除一个节点,并用另一个节点替代。当执行上个删除节点操作之后,结果如下
《body》
《p class="opener"》first paragraph《/p》
《p id="closer"》final《/p》
《!-- and that’s about it --》
《/body》 我们来看看replaceChild的使用。我们把上一个删除节点来替代第二个p
和removeChild返回一样。replaced就是移除的节点。现在结果为
《body》
《p class="opener"》first paragraph《/p》
《p》《em》second《/em》 paragraph《/p》
《!-- and that’s about it --》
《/body》

更多文章:
intelligent原型(介绍常见软件过程模型(瀑布,原型,增量,螺旋)的原理及优缺点回答好追分200)
2026年7月26日 09:30
webservice接口难吗(webservice接口测试问题)
2025年6月25日 05:30
数据库varchar默认大小(如何修改oracle数据库查询的默认大小写状态)
2026年3月31日 04:30
advoid是什么意思(avoid sth, avoid to do sth ,avoid doing sth 分别是什么意思)
2026年2月19日 20:30
excel批量修改文件名(Excel工作表批量重命名,以1,2,3,4,5,6直到100,怎么操作 高手指教下啦,thank you~)
2025年7月23日 14:00
datagridview 下拉框(C#DataGrid如何绑定其中一列为下拉框并且获取值)
2026年1月12日 18:30
roundup函数第二个参数是负数(excelroundup函数什么意思)
2026年4月4日 08:30
java游戏代码可复制(求一个简单RPG游戏的代码,JAva编写的)
2025年12月24日 08:30













