dom

DOM结构树在这里插入图片描述
封装一个函数( 找 i 标签的父元素节点)
	<body>
		<div>
			<strong>
				<span>
					<i></i>
				</span>
			</strong>
		</div>
	</body>
	<script>
		function retParent(elem, n) {
        while(elem == null && n) {
            elem = elem.parentElement;
            n --;
        }
        return elem;
    	}   
    	var i = document.getElementsByTagName('i')[0];
	</script>

结果:
在这里插入图片描述

封装一个函数找他的子元素节点
	<body>
		<div>
    	<p></p>
   	 	<a href=""></a>
    	123
    	<!--qwer-->
    	<strong>
       	 	<span>
            <i></i>
        	</span>
    	</strong>
</div>

	</body>
	<script>
		Element.prototype.chidrenNodes = function() {
			var child = this.childNodes;
			var len = child.length;
			var arr = [];
			for( var i = 0; i < len; i ++) {
				if(child[i].nodeType = 1) {
					arr.push(child[i]);
				}
			}
			return arr;
		}
		var div = document.getElementsByTagName('div')[0];
	</script>

我们试一下返回结果:
在这里插入图片描述

DOM基本操作
  • 增:
  1. 增加元素节点document.createElement()
  2. 增加文本节点document.createTextNode()
  3. 增加注释节点document.createComment()
  1. appendChild() 跟push类似,都是插入到最后一个
  2. insertBefore(a, b) ----> insert a Before b
    这里我们写个例子:
<body>
	<div>
		<span></span>
	</div>
</body>
<script>
	var div = document.getElementsByTagName('div')[0];
    var span = document.getElementsByTagName('span')[0];
    var strong = document.createElement('strong');
    div.insertBefore(strong, span);
</script>

我们看看结果:
在这里插入图片描述
这样strong就被插入到span之前了

  1. parent.removeChild() 括号里面填子节点,子节点就被剪切出来。
  2. child.remove() 会直接删除该节点。
  • 替换
  1. parentNode.replaceChild(new, origin); 拿新的元素替换老的元素。

div.innerHTML = 123 -----> 会把原来的div中的内容用123替换掉
而div.innerHTML +=123 ------>可以加在原来内容的后面
innerText 这里用个例子来看:

<body>
	<div>
		<span>123</span>
		<a>234</a>
	</div>
</body>
<script>
	var div = docuemnt.getElementsByTagName('div');
</script>

innerContent
setAttribute 给标签设置一个行间属性
div.setAttribute(‘class’, ‘demo’) 括号里面前面是属性名,后面的是属性值。
getAttibute 取一个属性值:

	<body>
	<div id = "demo">
	</div>
	</body>
	<script>
		var div = doument.getElementsByTagName('div')[0];
		div.getAttritube('id');
	</script>
	/*这串代码返回的结果就是 demo*/

例子:
(在一个body是空的页面中间添加这样的样式:

<div class='demo'>
	<p class='slogan'>我最帅</p>
</div>

下面是代码:

	var div = document.createElement('div');
    var p = document.createElement('p');
    var text = document.createTextNode('我最帅');
    div.setAttribute('class', 'example');
    p.setAttribute('class', 'slogan');
    p.appendChild(text);
    div.appendChild(p);

此时看效果:
在这里插入图片描述
封装一个insertAfter方法

	Element.prototype.insertAfter = function(targetNode, afterNode){
		 var beforeNode = afterNode.nextElementSibling;
		 if(beforeNode = null) {
			this.appendChild(beforeNode);
		 }else{
		 	insertBefore(targetNode, beforeNode);
		 }
	}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值