DOM方法

获取元素

getElementById() 返回带有指定 ID 的元素
getElementsByTagName() 返回指定标签名的元素
getElementsByClassName() 返回指定类名的元素

DOM节点

appendChild() 把新的子节点添加到指定节点。
			function add(){
				var aObj=document.createElement("a");
				aObj.href="http://sohu.com";
				aObj.target="_blank";
				
				// 方法二
				aObj.innerHTML="<img src='../img/sohu.jpg' width='50' height='50' alt='sohu'>";
				
				/*
				方法一
				var img=document.createElement("img");
				img.src="../img/sohu.jpg";
				img.width="50";
				img.height="50";
				img.alt="sohu";
				aObj.appendChild(img); */
				
				var content=document.getElementById("content");
				content.appendChild(aObj);
			}

		aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <br>
		aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <br>
		aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <br>
		aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <br>
		<div class="content" id="content"></div>
		bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb <br>
		bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb <br>
		bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb <br>
		bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb <br>
		<a href="javascript:add();">增加img_link</a><br>
removeChild() 删除子节点。
insertBefore()在指定的子节点前面插入新的子节点。
createElement()创建属性节点
createTextNode() 创建文本节点
<style type="text/css">
			.content{width: 400px;overflow-y: scroll;border: 1px solid #ccc;height: 300px;}
			a{display: inline-block;margin:0 10px 10px 0;position: relative;width: 50px;height: 50px;line-height: 50px;text-align: center;border: 1px solid #ccc;text-decoration: none;}
			body>a{width: 800px;border: none;text-align: left;}
			a img:last-child{position: absolute;right: 5px;top: 5px; z-index: 2315684654;}
		</style>
<script>
			function add(){
				var colors=["yellor","red","orange","green","pink","purple","aqua"]
				
				var con=document.getElementById("content");
				var sec=document.getElementById("sec");
				var aObj=document.createElement("a");
				aObj.href="#";
				// aObj.innerHTML="<img src='../img/sohu.jpg' width='50' height='50'>";
				aObj.innerHTML=Math.floor(Math.random()*10);
				aObj.style.backgroundColor=colors[Math.floor(Math.random()*7)]
				
				var imgObj=document.createElement("img"); //创建新节点
				imgObj.src="../img/close.jpg";
				aObj.appendChild(imgObj);
				
				con.insertBefore(aObj,sec);//在sec前插入aObj
				
				imgObj.onclick=function(){
					con.removeChild(aObj);//removeChild删除的是自己
				}
			}
		</script>
<body>
		aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <br>
		aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <br>
		aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <br>
		aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <br>
		<div class="content" id="content">
			<p>我是第一段</p>
			<!-- 带插入预留 -->
			<p id="sec">我是第二段</p>
		</div>
		bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb <br>
		bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb <br>
		bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb <br>
		bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb <br>
		<a href="javascript:add();">增加img_link</a><br>
	</body>
setAttribute() 设置/修改属性
.pra{
				width: 400px;height: 400px;position: absolute;
				left: calc(50% - 200px);top: calc(50% - 200px);
				background-color: orangered;text-align: center;line-height: 200px;
			}
<body onload="showAttr()">
		<p></p>
		<script>
			function showAttr(){
				var p=document.createElement("p");
				var text=document.createTextNode("快来升级的反馈里的房价款");
				p.appendChild(text);
				document.body.appendChild(p);
				
				var pObj=document.getElementsByTagName("p")[0];
				pObj.setAttribute("id","pra");//setAttribute("属性名","属性值")
				pObj.setAttribute("class","pra");
				
			}
		</script>
	</body>
getAttribute() 返回指定的属性值/获取属性值
<a href="javascript:void(0);"  title="搜狐" onclick="showAttr()" id="link">搜狐</a>
		<script>
			function showAttr(){
				var linkObj=document.getElementById("link");
				console.log(linkObj.getAttribute("title"));
				console.log(linkObj.title);
			}
		</script>
createAttribute() 创建属性节点。
<img id="pic" >
		<script>
			var imgObj=document.getElementById("pic");
			var srcAtt=document.createAttribute("src"); //01 创建属性
			srcAtt.value="../img/sohu.jpg"; // 02 设置属性值
			imgObj.setAttributeNode(srcAtt); // 03 添加属性节点
			
		</script>
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 Vue 中,可以通过 `render` 函数或者模板来生成虚拟 DOM,而将虚拟 DOM 转化为真实 DOM 的过程,就是 Vue 中的“渲染”。在 Vue 中,提供了一个 `createElment` 函数,可以将虚拟 DOM 转换成真实 DOM。 下面是一个手写 Vue 的 vNode 转化 dom 的例子: ``` function render() { return h('div', { class: 'container' }, [ h('h1', null, 'Hello, World!'), h('p', null, 'This is a paragraph.') ]) } const container = document.getElementById('app') const vnode = render() const dom = createDOM(vnode) function createDOM(vnode) { if (typeof vnode === 'string') { return document.createTextNode(vnode) } const el = document.createElement(vnode.tag) if (vnode.data && vnode.data.attrs) { Object.keys(vnode.data.attrs).forEach(key => { el.setAttribute(key, vnode.data.attrs[key]) }) } vnode.children.forEach(child => { el.appendChild(createDOM(child)) }) return el } container.appendChild(dom) ``` 在上面的例子中,我们先通过 `render` 函数生成一个虚拟 DOM,然后通过 `createDOM` 函数将虚拟 DOM 转换成真实 DOM,最后将真实 DOM 添加到页面中。 在 `createDOM` 函数中,首先判断当前节点是否是一个文本节点,如果是,则通过 `document.createTextNode` 方法创建一个文本节点并返回;否则,通过 `document.createElement` 方法创建一个元素节点,并将节点的属性和子节点递归创建。 需要注意的是,`vnode` 的属性和子节点都保存在 `data` 对象中,属性保存在 `data.attrs` 中,子节点保存在 `children` 中。在创建元素节点时,需要遍历属性和子节点,并分别设置到元素节点中。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值