Dom节点操作

(document object model)

旧源码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>DOM节点操作</title>
		<script>
			//Tools Package
			function pw(value){
				console.log(value);
			}
			function id(id){
				return document.getElementById(id);
			}
			function Class(id){
				return document.getElementsByClassName(id)[0];
			}
			function tag(id){
				return document.getElementsByTagName(id);
			}
		</script>
		<style>
			#list li{
				background-color: aqua;
			}
		</style>
	</head>
	<body>
		<input id="msg" type="text" />
		<ul id="list">
			<li>1</li>
			<li>2</li>
		</ul>
		<script>
			//1.先获取要操作的标签(Label,Tag)
			var inp=id('msg');
			var list=id('list');
			var lis=list.children;
			//2.Binding to input of 键盘事件:onkeydown按下  onkeyup抬起
			inp.onkeydown=function(e){
				if(e.keyCode==13){
					//回车(Enter)
					//在ul中添加一个<li> 方法1: list.innerHTML+='<li>'+inp.value+'</li><br>';
					pw('this.knock=回车键,它的ascii='+e.keyCode+'!');
					//在ul中添加一个<li> 方法2:
					var li=document.createElement("li");
					li.innerHTML=inp.value;
					list.appendChild(li);
					//绑定新元素
					//for(var i=0;i<lis.length;i++){
						lis[lis.length-1].onclick=function(){
							pw(this);
							pw('元素被删除');
							list.removeChild(this);
						}
					//}
					//输入框回车后将被清空
					inp.value='';
				}
			}
			//事件流
			for(var i=0;i<lis.length;i++){
				lis[i].onclick=function(){
					pw(this+'元素被删除');
					list.removeChild(this);
				}
			}
		</script>
	</body>
</html>

新源码 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>DOM节点操作</title>
		<script>
			//Tools Package
			function pw(value){
				console.log(value);
			}
			function id(id){
				return document.getElementById(id);
			}
			function Class(id){
				return document.getElementsByClassName(id)[0];
			}
			function tag(id){
				return document.getElementsByTagName(id);
			}
		</script>
		<style>
			*{
				margin: 0;
				padding: 0;
			}
			#list li{
				list-style: none;
				background-color: aqua;
			}
		</style>
	</head>
	<body>
		<input id="msg" type="text" />
		<ul id="list">
			<li>1<button>delete 1</button></li>
			<li>2<button>delete 2</button></li>
		</ul>
		<script>
			//1.先获取要操作的标签(Label,Tag)
			var inp=id('msg');
			var list=id('list');
			var lis=list.children;
			//2.Binding to input of 键盘事件:onkeydown按下  onkeyup抬起
			inp.onkeydown=function(e){
				if(e.keyCode==13){
					//回车(Enter)
					//在ul中添加一个<li> 方法1: list.innerHTML+='<li>'+inp.value+'</li><br>';
					pw('this.knock=回车键,它的ascii='+e.keyCode+'!');
					//在ul中添加一个<li> 方法2:
					var li=document.createElement("li");
					var btn=document.createElement('button');
					btn.innerHTML='delete '+(lis.length+1);
					li.innerHTML=inp.value;//将键入的值赋给新的<li>元素
					li.appendChild(btn);
					li.style.background='red';//css样式设置
					list.appendChild(li);
					//输入框回车后将被清空
					inp.value='';
				}
			}
			//针对li元素多的情况,减少循环次数,提高性能
			list.onclick=function(e){
				pw('li被点击(e.target)');
				//子事件具有冒泡特性,冒泡给父事件
				e.stopPropagation;
				//区别子事件
				if(e.target.nodeName=='BUTTON'){
					list.removeChild(e.target.parentNode);
				}else{
					list.removeChild(e.target);
				}
			}
		</script>
	</body>
</html>

 

新旧代码之间区别在于性能优化,不用每添加一个子事件就循环绑定所有事件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值