tbody.onclick = function (e) { var e = e || document.event console.log(123) console.log(target) if (e.target.nodeName == 'SPAN') { target.parentNode.parentNode.remove() } } } 这里的target.parentNode.parentNode.remove() 为什么不报未定义
时间: 2024-01-13 12:02:56 浏览: 28
在这段代码中,`target` 是未定义的,因此 `target.parentNode.parentNode.remove()` 会引发错误。你可以通过在代码中定义 `target` 变量并将其设置为事件的目标元素来解决这个问题。例如,你可以将 `console.log(target)` 更改为 `var target = e.target; console.log(target)`。这将为你提供一个指向事件目标元素的变量,从而允许你使用 `target.parentNode.parentNode.remove()`。
相关问题
tbody.onclick = function (e) { var e = e || document.event console.log(123) console.log(e.target) if (e.target.nodeName == 'SPAN') { this.parentElement.remove() } 这行代码如何删除li }
这段代码可以删除 `li` 元素的父元素, 也就是 `ul` 元素, 通过 `e.target` 获取到点击的元素, 如果该元素的 `nodeName` 是 `SPAN`, 则将其父元素删除。以下是修改后的代码:
```javascript
tbody.onclick = function (e) {
var e = e || document.event;
console.log(123);
console.log(e.target);
if (e.target.nodeName == 'SPAN') {
e.target.parentNode.parentNode.remove(); // 删除 li 元素的父元素 ul
}
}
```
这里需要调用两次 `parentNode` 才能获取到 `li` 元素的父元素 `ul`,因为 `e.target` 是点击的 `span` 元素,而 `li` 元素是 `span` 元素的父元素的父元素。
tbody.onclick = function (e) { var e = e || document.event console.log(123) console.log(target) if (e.target.nodeName == 'SPAN') { e.target.parentNode.parentNode.remove() } } } 这里的e.target 是什么意思
在这段代码中,`e.target` 表示触发事件的元素。当你点击 `tbody` 元素内的某个元素时,会触发 `tbody` 的 `click` 事件,此时事件对象 `e` 中的 `target` 属性将会指向被点击的元素。通过这个方法,你可以获得用户点击的元素,并对其进行一些操作,例如在这个例子中,如果被点击的元素是一个 `span` 标签,则会移除该元素所在的行。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
</style>
</head>
<body>
<button onclick="addRow()">新增一行</button>
<button onclick="addColumn()">添加一列</button>
<button onclick="deleteRow()">删除行</button>
<button onclick="deleteColumn()">删除列</button>
<button onclick="changeSize()">调整大小</button>
<input type="text" oninput="filterTable(0)" placeholder="工艺膜层">
var table = document.getElementById("myTable");
var imageColumnIndices = [8, 9, 10,11,12,13]; // 指定要添加图片按钮的列索引数组
function addRow() {
var newRow = table.insertRow();
var cellsCount = table.rows[0].cells.length;
for (var i = 0; i < cellsCount; i++) {
var newCell = newRow.insertCell();
newCell.contentEditable = true;
if (imageColumnIndices.includes(i)) {
var newInput = document.createElement("input");
newInput.type = "file";
newInput.onchange = function() {
previewImage(this);
};
newInput.onclick = function() {
showPopup(this.src);
};
newCell.appendChild(newInput);
// 点击事件监听器,点击图片按钮时弹出放大图片的弹出窗口
newInput.onclick = function () {
showPopup(this.src);
};
}else {
newCell.innerHTML = "新单元格"; // 将空余按钮的单元格内容设置为默认值
}
}
}
function addColumn() {
var cellsCount = table.rows[0].cells.length;
for (var i = 0; i < table.rows.length; i++) {
var newCell = table.rows[i].insertCell();
newCell.contentEditable = true;
newCell.innerHTML = "新单元格";
}
}我需要指定某一列的列宽需要怎么设置
var as = document.querySelectorAll('a'); for (var i = 0; i < as.length; i++) { as[i].onclick = function() { tbody.removeChild(this.parentNode.parentNode) } var subject = document.querySelector('.subject'); var name = document.querySelector('.name'); var score = document.querySelector('.score'); var info = document.querySelector('.info'); var tbody = document.querySelector('tbody'); var arr = []; info.addEventListener('submit', function (e) { e.preventDefault(); var obj = { name: name.value, subject: subject.value, score: score.value, } arr.push(obj); this.reset(); for (var i = 0; i < arr.length; i++) { var tr = document.createElement('tr'); tr.innerHTML = ${arr[i].name} ${arr[i].subject} ${arr[i].score} 删除 <button onclick="moveUp(this)">上移</button> <button onclick="moveDown(this)">下移</button> ; } tbody.appendChild(tr); }) 为什么录入name显示undef
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>鉴本</title>
<style>
table {
border-collapse: collapse;
}
td, th {
border: 1.5px solid black;
padding: 5px;
}
table img {
max-width: 150px;
height: auto;
}
.popup {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.8);
display: flex;
align-items: center;
justify-content: center;
}
.popup img {
max-width: 100%;
max-height: 100%;
cursor: zoom-out;
}
</style>
</head>
<body>
<button onclick="addRow()">新增一行</button>
<button onclick="addColumn()">添加一列</button>
<button onclick="deleteRow()">删除行</button>
<button onclick="deleteColumn()">删除列</button>
<button onclick="changeSize()">调整大小</button>
var table = document.getElementById("myTable");
var imageColumnIndices = [8, 9, 10,11,12,13]; // 指定要添加图片按钮的列索引数组
function addRow() {
var newRow = table.insertRow();
var cellsCount = table.rows[0].cells.length;
for (var i = 0; i < cellsCount; i++) {
var newCell = newRow.insertCell();
newCell.contentEditable = true;
if (imageColumnIndices.includes(i)) {
var newInput = document.createElement("input");
newInput.type = "file";
newInput.onchange = function() {
previewImage(this);
};
newInput.onclick = function() {
showPopup(this.src);
};
newCell.appendChild(newInput);
// 点击事件监听器,点击图片按钮时弹出放大图片的弹出窗口
newInput.onclick = function () {
showPopup(this.src);
};
}else {
newCell.innerHTML = "新单元格"; // 将空余按钮的单元格内容设置为默认值
}
}
}
function addColumn() {
var cellsCount = table.rows[0].cells.length;
for (var i = 0; i < table.rows.length; i++) {
var newCell = table.rows[i].insertCell();
newCell.contentEditable = true;
newCell.innerHTML = "新单元格";
}
}
h1>学生信息表格 <form class="info" autocomplete="off"> 姓名:<input type="text" class="uname" name="uname" /> 科目<input type="text" class="subject" name="subject" /> 成绩:<input type="text" class="score" name="score" /> <button class="add">录入</button> </form> 姓名 科目 成绩 操作 操作 <script> var data = [{ uname: '张三', subject: 'JavaScript', score: 100 }, { uname: '李四', subject: 'JavaScript', score: 90 }, { uname: '刘五', subject: 'JavaScript', score: 90 }]; var tbody = document.querySelector('tbody'); for (var i = 0; i < data.length; i++) { var tr = document.createElement('tr'); tbody.appendChild(tr); for (var k in data[i]) { var td = document.createElement('td'); td.innerHTML = data[i][k]; tr.appendChild(td); } var td = document.createElement('td'); td.innerHTML = '<a href="javascript:;">删除 </a>'; tr.appendChild(td); var td = document.createElement('td'); td.innerHTML = <button onclick="moveUp(this)">上移</button> <button onclick="moveDown(this)">下移</button> ; tr.appendChild(td); } var uname = document.querySelector('.uname'); var subject = document.querySelector('.subject'); var score = document.querySelector('.score'); var info = document.querySelector('.info'); var tbody = document.querySelector('tbody'); var arr = []; info.addEventListener('submit', function (e) { e.preventDefault(); var obj = { uname: uname.value, subject: subject.value, score: score.value, } arr.push(obj); this.reset(); for (var i = 0; i < arr.length; i++) { var tr = document.createElement('tr'); tr.innerHTML = ${arr[i].uname} ${arr[i].subject} ${arr[i].score} 删除 <button onclick="moveUp(this)">上移</button> <button onclick="moveDown(this)">下移</button> ; } tbody.appendChild(tr); }) var as = document.querySelectorAll('a'); for (var i = 0; i < as.length; i++) { as[i].onclick = function() { tbody.removeChild(this.parentNode.parentNode) } function moveUp(btn) { var row = btn.parentNode.parentNode; var prevRow = row.previousElementSibling; if (prevRow) { row.parentNode.insertBefore(row, prevRow); } else { row.parentNode.appendChild(row); } } } function moveDown(btn) { var row = btn.parentNode.parentNode; var nextRow = row.nextElementSibling; if (nextRow) { row.parentNode.insertBefore(nextRow, row); } else { var firstRow = row.parentNode.firstElementChild; row.parentNode.insertBefore(row, firstRow); } } </script>怎么用数组索引上下移动行
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
var as = document.querySelectorAll('a'); for (var i = 0; i < as.length; i++) { as[i].onclick = function() { tbody.removeChild(this.parentNode.parentNode) } var subject = document.querySelector('.subject'); var name = document.querySelector('.name'); var score = document.querySelector('.score'); var info = document.querySelector('.info'); var tbody = document.querySelector('tbody'); var arr = []; info.addEventListener('submit', function (e) { e.preventDefault(); var obj = { name: name.value, subject: subject.value, score: score.value, } arr.push(obj); this.reset(); for (var i = 0; i < arr.length; i++) { var tr = document.createElement('tr'); tr.innerHTML = ${arr[i].name} ${arr[i].subject} ${arr[i].score} 删除 <button onclick="moveUp(this)">上移</button> <button onclick="moveDown(this)">下移</button> ; } tbody.appendChild(tr); }) 为什么录入name显示undef
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>鉴本</title>
<style>
table {
border-collapse: collapse;
}
td, th {
border: 1.5px solid black;
padding: 5px;
}
table img {
max-width: 150px;
height: auto;
}
.popup {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.8);
display: flex;
align-items: center;
justify-content: center;
}
.popup img {
max-width: 100%;
max-height: 100%;
cursor: zoom-out;
}
</style>
</head>
<body>
<button onclick="addRow()">新增一行</button>
<button onclick="addColumn()">添加一列</button>
<button onclick="deleteRow()">删除行</button>
<button onclick="deleteColumn()">删除列</button>
<button onclick="changeSize()">调整大小</button>
var table = document.getElementById("myTable");
var imageColumnIndices = [8, 9, 10,11,12,13]; // 指定要添加图片按钮的列索引数组
function addRow() {
var newRow = table.insertRow();
var cellsCount = table.rows[0].cells.length;
for (var i = 0; i < cellsCount; i++) {
var newCell = newRow.insertCell();
newCell.contentEditable = true;
if (imageColumnIndices.includes(i)) {
var newInput = document.createElement("input");
newInput.type = "file";
newInput.onchange = function() {
previewImage(this);
};
newInput.onclick = function() {
showPopup(this.src);
};
newCell.appendChild(newInput);
// 点击事件监听器,点击图片按钮时弹出放大图片的弹出窗口
newInput.onclick = function () {
showPopup(this.src);
};
}else {
newCell.innerHTML = "新单元格"; // 将空余按钮的单元格内容设置为默认值
}
}
}
function addColumn() {
var cellsCount = table.rows[0].cells.length;
for (var i = 0; i < table.rows.length; i++) {
var newCell = table.rows[i].insertCell();
newCell.contentEditable = true;
newCell.innerHTML = "新单元格";
}
}
h1>学生信息表格 <form class="info" autocomplete="off"> 姓名:<input type="text" class="uname" name="uname" /> 科目<input type="text" class="subject" name="subject" /> 成绩:<input type="text" class="score" name="score" /> <button class="add">录入</button> </form> 姓名 科目 成绩 操作 操作 <script> var data = [{ uname: '张三', subject: 'JavaScript', score: 100 }, { uname: '李四', subject: 'JavaScript', score: 90 }, { uname: '刘五', subject: 'JavaScript', score: 90 }]; var tbody = document.querySelector('tbody'); for (var i = 0; i < data.length; i++) { var tr = document.createElement('tr'); tbody.appendChild(tr); for (var k in data[i]) { var td = document.createElement('td'); td.innerHTML = data[i][k]; tr.appendChild(td); } var td = document.createElement('td'); td.innerHTML = '<a href="javascript:;">删除 </a>'; tr.appendChild(td); var td = document.createElement('td'); td.innerHTML = <button onclick="moveUp(this)">上移</button> <button onclick="moveDown(this)">下移</button> ; tr.appendChild(td); } var uname = document.querySelector('.uname'); var subject = document.querySelector('.subject'); var score = document.querySelector('.score'); var info = document.querySelector('.info'); var tbody = document.querySelector('tbody'); var arr = []; info.addEventListener('submit', function (e) { e.preventDefault(); var obj = { uname: uname.value, subject: subject.value, score: score.value, } arr.push(obj); this.reset(); for (var i = 0; i < arr.length; i++) { var tr = document.createElement('tr'); tr.innerHTML = ${arr[i].uname} ${arr[i].subject} ${arr[i].score} 删除 <button onclick="moveUp(this)">上移</button> <button onclick="moveDown(this)">下移</button> ; } tbody.appendChild(tr); }) var as = document.querySelectorAll('a'); for (var i = 0; i < as.length; i++) { as[i].onclick = function() { tbody.removeChild(this.parentNode.parentNode) } function moveUp(btn) { var row = btn.parentNode.parentNode; var prevRow = row.previousElementSibling; if (prevRow) { row.parentNode.insertBefore(row, prevRow); } else { row.parentNode.appendChild(row); } } } function moveDown(btn) { var row = btn.parentNode.parentNode; var nextRow = row.nextElementSibling; if (nextRow) { row.parentNode.insertBefore(nextRow, row); } else { var firstRow = row.parentNode.firstElementChild; row.parentNode.insertBefore(row, firstRow); } } </script>怎么用数组索引上下移动行
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
h1>学生信息表格 <form class="info" autocomplete="off"> 姓名:<input type="text" class="uname" name="uname" /> 科目<input type="text" class="subject" name="subject" /> 成绩:<input type="text" class="score" name="score" /> <button class="add">录入</button> </form> 姓名 科目 成绩 操作 操作 <script> var data = [{ uname: '张三', subject: 'JavaScript', score: 100 }, { uname: '李四', subject: 'JavaScript', score: 90 }, { uname: '刘五', subject: 'JavaScript', score: 90 }]; var tbody = document.querySelector('tbody'); for (var i = 0; i < data.length; i++) { var tr = document.createElement('tr'); tbody.appendChild(tr); for (var k in data[i]) { var td = document.createElement('td'); td.innerHTML = data[i][k]; tr.appendChild(td); } var td = document.createElement('td'); td.innerHTML = '<a href="javascript:;">删除 </a>'; tr.appendChild(td); var td = document.createElement('td'); td.innerHTML = <button onclick="moveUp(this)">上移</button> <button onclick="moveDown(this)">下移</button> ; tr.appendChild(td); } var uname = document.querySelector('.uname'); var subject = document.querySelector('.subject'); var score = document.querySelector('.score'); var info = document.querySelector('.info'); var tbody = document.querySelector('tbody'); var arr = []; info.addEventListener('submit', function (e) { e.preventDefault(); var obj = { uname: uname.value, subject: subject.value, score: score.value, } arr.push(obj); this.reset(); for (var i = 0; i < arr.length; i++) { var tr = document.createElement('tr'); tr.innerHTML = ${arr[i].uname} ${arr[i].subject} ${arr[i].score} 删除 <button onclick="moveUp(this)">上移</button> <button onclick="moveDown(this)">下移</button> ; } tbody.appendChild(tr); }) var as = document.querySelectorAll('a'); for (var i = 0; i < as.length; i++) { as[i].onclick = function() { tbody.removeChild(this.parentNode.parentNode) } function moveUp(btn) { var row = btn.parentNode.parentNode; var prevRow = row.previousElementSibling; if (prevRow) { row.parentNode.insertBefore(row, prevRow); } else { row.parentNode.appendChild(row); } } } function moveDown(btn) { var row = btn.parentNode.parentNode; var nextRow = row.nextElementSibling; if (nextRow) { row.parentNode.insertBefore(nextRow, row); } else { var firstRow = row.parentNode.firstElementChild; row.parentNode.insertBefore(row, firstRow); } } </script>怎么用数组索引上下移动行
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)