Ⅰ、问题描述:
1、用JavaScript + html实现,动态创建表格及动态删除表格;
2、分析:
A、用 html 实现在页面显示输入行与列的两个文本框;
B、实现输入 m 行、n 列的数值,在点击创建后,就形成了一个 m*n 表格;
C、创建可获取随机颜色的函数,等待调用;
D、实现删除的绑定事件,在单击删除按钮之后,实现行元素的删除,以及删除后整个表格的显示;
Ⅱ、实现过程如下:
1、运行软件VScode,亲测可实现;
2、运行代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
行:<input type="text" name="" id="row">
列:<input type="text" name="" id="col">
<input type="button" value="创建" id="btn" />
<div id="box">
</div>
<script>
function $(id) {
//封装一个函数,根据 id 来找元素的函数;
return document.getElementById(id);
}
function create(tagName) {
//封装一个根据标签名来创建新元素的函数;
return document.createElement(tagName);
}
$('btn').onclick = function () {
var rValue = $('row').value;
var cValue = $('col').value;
var oTable = create('table'); //使能看到添加的表格的元素,专门添加的 border 的值;
oTable.border = 1;
for (var i = 0; i < rValue; i++) {
//此时循环的目的:迎合你输入的行数;
var oTr = create('tr');
for (var j = 0; j < cValue; j++) {
//此时循环的目的:迎合输入的列数,使得表格达到你想要的情况;
var oTd = create('td');
oTd.innerHTML = 'aaa'; //将 'aaa' 的值添加到每一个单元格中;
oTd.style.backgroundColor = getColor();//将每一个单元格中的背景色设置成随机的;
oTr.appendChild(oTd); //每次的 oTd 都作为 oTr 的一个子元素来添加进去;
}
var endTd = create('td'); // 再添加一列(目的:显示删除的操作)
endTd.innerHTML = '<a href="javascript:;">删除</a>';
oTr.appendChild(endTd); //在 oTr(行标记) 中添加 endTd(列标记);
oTable.appendChild(oTr); //在 oTable(表格) 中添加 oTr(行标记);
}
$('box').appendChild(oTable);//将 oTable 放在 id 为 box 的 div 中;
var as = $('box').getElementsByTagName('a'); //绑定单击事件,并获取 a标签 的相关信息;
for (var i = 0; i < as.length; i++) {
as[i].onclick = function () {
if (confirm('你确定要删除这一行吗?')) {
//弹出一个确定的对话框 confirm();(你点确定,它的值就是 true,而你点取消,它的值就是 false;)
this.parentNode.parentNode.remove(); // a标签 的父亲是 td,td 的父亲是 tr, 因此让 a标签 父亲的父亲删除就可以了(即:删除了 a标签 所在的那一行信息);
}
}
}
//任意获取 '#******' 所表示的所有的颜色值 (即:通过拼接起来的 6 个数字所表示的颜色值);
function getColor() {
var str = '0123456789abcdef'; // 0-15 (随机找一个角标)
var color = "#"; /* 开头肯定是以'#'开始,因此其为第一个 */
// 循环6次 每次随机生成一个字符
for (var i = 0; i < 6; i++) {
var num = rand(0, 15);
color += str[num];
}
return color;
}
function rand(min, max) {
//通过 Math 操作可以获取:min 到 max 的随机的整数值;
return Math.round(Math.random() * (max - min) + min);
}
}
</script>
</body>
</html>
3、结果展示:
A、显示行与列的两个文本框,结果展示:
B、根据输入的行列值,创建单元格是随机背景颜色的表格,结果展示;(以 20*20 为例);
C、点击第一行删除的按钮,结果展示;
D、点击确定按钮,结果展示;(即:第一行就被删除了)