js动态创建表格,可以动态的删除(事件委托)

js事件

1.1 onclick  点击事件

(阻止事件冒泡:ie使用 e.cancleBubble = true、e.stopPropagation(); 取消默认事件: e.preventDefault(),IE则是使用e.returnValue = false )

禁止a标签的跳转

"<a href='javascript:;'>删除</a>";//这种可以禁止a标签的跳转
innerHTML中可以插入标签
标签.innerHTML='<a javascript:"">删除</a>';
js动态的成绩表格,可以删除当前的一行。(用事件委托)

知识点:

创建内容

innerHTML删除子元素

创建标签

dom.createElement() 标签(dom元素).createElement()

添加到父元素

dom.appenChild(子元素) 父元素.appenChild(子元素)

删除元素.

dom元素.remove()

动态的删除元素

事件委托的方法
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>动态生成表格</title>
	<style type="text/css">
		table{
			border: 1px solid red;
		}
		td{
			text-align: center;
		}
	</style>
</head>
<body>
	   <input  placeholder="请输入列"  >
	   <input  placeholder="请输入行"  >
	   <button>按钮</button>
	   <table>
	   </table>
	   <div id="box"></div>
	   <script type="text/javascript">
	   	        var input1=document.getElementsByTagName('input')[0];
	   	        var input2=document.getElementsByTagName('input')[1];
	   	        var button=document.getElementsByTagName('button')[0];
	   	        var box=document.getElementById('box');
	   	        console.log(box);
	   	        button.onclick=function(){
	   	        	 var inputval=Number(input1.value);
	   	        	 var inputvalt=Number(input2.value);
	   	        	 //创建一个div标签
	   	        	 var table=document.createElement('table');
	   	        	//input这里的inputval是个数字
	   	        	  for(var i=0;i<inputval;i++){//行
	   	        	  	      var tr=document.createElement('tr');
	   	        	  	  for(var j=0;j<inputvalt;j++){//列               
	   	        	  	      var  td=document.createElement('td');
	   	        	  	      td.style.color=getColor();
	   	        	  	      td.innerHTML=getRand(0,100);   
	   	        	  	      // console.log(j)	
	   	        	  	      td.style.backgroundColor=getColor();
	   	        	  	      tr.appendChild(td);  	           	  	       	  	    
	   	        	  	  }		
	   	        	  	      //在末尾的那一列添加删除的按钮
	   	        	  	      var a=document.createElement('a');  
	   	        	  	      a.innerHTML="<a href='javascript:;'>删除</a>";
	   	        	  	      tr.appendChild(a);	 
	   	        	  	      // box.appendChild(table);
	   	        	  	      table.appendChild(tr);  
	   	        	  	      //用事件对象的方式去删除整一列
	   	        	  	      //事件委托给父元素身上
	   	        	  };
	   	        	  //添加列  	  
	   	        	  // box.appendChild(table);
	   	        	 // console.log(document.documentElement('body'))
	   	        	 // console.log(tr.nodeType());
	   	        	 // var body=document.body.appendChild(body);
	   	        	 // console.log(document.body);
	   	        	 // 把一个元素添加到body元素中
	   	        	 // document.body.appendChild(table)
	   	        	 box.appendChild(table);
	   	        	 console.log(inputval); 
	   	        	 console.log(inputvalt);
	   	        	 //是把定义的元素变成空,内容输入完成之后变成空 把input按钮的value变成空
	   	        	  input1.value="";
	   	        	  input2.value="";   	        	 
	   	        }
	   	     
	   	        //这个问题牵扯到页面加载顺序的问题。
	   	        //动态生成表格.html:68 Uncaught TypeError: Cannot set property 'click' of undefined
	   	        //动态生成表格.html:70 Uncaught TypeError: Failed to execute 'getElementById' on 'Document': 1 argument required, but only 0 present.
	   	            var boxs=document.getElementById('box');
	   	         	boxs.onclick=function(e){//在js中是onclick,在jq是click
	   	        	  	      	var event=e||event.window;
	   	        	  	      	var target=event.target||event.srcElement;
	   	        	  	      	if(event.target.nodeName=="A"){
	   	        	  	      	   event.target.parentNode.parentNode.remove();//整个tr被清楚
	   	        	  	      	}
	   	        	  	      	console.log(target);	   	        	  	
	   	        	  	} 	  
	   	        	
	   //封装是哪个生成的随机数
	   function getRand(min,max){
	   		return parseInt(Math.random()*(max-min+1))
	   }
	   //封装一个十六进制的颜色值
	   // function getColor(){
	   // 	var str="0123456789abcdef";
	   // 	var color="#";
	   // 	//颜色值是6字母组成
	   // 	for(var i=0;i<6;i++){
	   // 		var rand=getRand(0,15);
	   // 		var color+=str.chartAt(rand);//把它生成的随机的字母组合在一起
	   //    }
	   //    return color;
	   // }
	   function getColor(){
		    var str="#";
		    var arr=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];
		    for(var i=0;i<6;i++){
		        var num=parseInt(Math.random()*16);
		        str+=arr[num];
		    }
		    return str;
		}

		console.log(getColor());
	   // for(var i=0;i<100;i++){
	   // 	console.log(getColor())
	   // }
	   // 
	   // 第一种方案
	   // function getColor(){
	   //  var str1="0123456789abcdef";
	   // 	  var color="#";
	   // 	  for(var i=0;i<6;i++){
	   // 	  	//动态生成表格.html:60 Uncaught RangeError: Maximum call stack size exceeded自己调用自己
	   // 	  	 color+=str1.charAt(getRand(0,15));
	   // 	  }
	   // 	  return color;
	   // }
	   // console.log(getColor());
	   // 
	   // 
	   // 第二种方案
	      function getColor(){
	      	var color="#";
	      	//以数组的方式去存储  十六进制颜色值
	      	var str2=['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'];
	      	for(var i=0;i<6;i++){
	      		var  rand=getRand(0,15);
	      		color+=str2[rand]
	      	}
	      	return color
	      }
	      console.log(getColor());
	   // 
	  //       var str1="0123456789abcdef";
	  //       //charAt() 方法可返回指定位置的字符。  chartAt没有这个方法,写代码是要细心
	  //       console.log(str1.charAt(12));
	  //       console.log(str1.indexOf(182));
	     
			// var str="Hello world!"
			// document.write("The first character is: " + str.charAt(0) + "<br />")
			// document.write("The second character is: " + str.charAt(1) + "<br />")
			// document.write("The third character is: " + str.charAt(2))
		
	   </script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值