当我使用javascript单击按钮时,我想向每行添加一个<td>
,但我希望它是一个切换按钮,当它第二次单击时必须再次消失。
我尝试在table标记的子代上执行for循环,但添加了一个表行,我还尝试为它们赋予相同的类,但仅将the添加到该类的第一个元素上。
这是我添加表格信息的地方
const verwerkDatatable = function(data) {
console.log(data);
const table = document.querySelector('.js-table');
table.innerHTML = `<tr class="js-table-header">
<td>Naam:</td>
<td>Toevoegdatum:</td>
<td>Vervaldatum:</td>
<td>Aantal:</td>
</tr>`;
for (let object of data) {
const amount = object.amount;
const name = object.name;
const addDate = object.date;
const exDate = object.expirationDate;
table.innerHTML += `<tr class="js-tr">
<td>${name}</td>
<td>${addDate}</td>
<td>${exDate}</td>
<td>${amount}</td>
</tr>`;
}
listenToTrash();
};
在这里,我尝试添加带有SVG的单元格
const listenToTrash = function() {
const trash = document.querySelector('.js-trash');
trash.addEventListener('click', function() {
const tableHeader = document.querySelector('.js-table-header');
tableHeader.innerHTML = `<tr class="js-table-header">
<td>Naam:</td>
<td>Toevoegdatum:</td>
<td>Vervaldatum:</td>
<td>Aantal:</td>
<td>Verwijderen:</td>
</tr>`;
const tableRow = document.querySelectorAll('.js-tr');
console.log(tableRow)
for (row of tableRow){
tableRow.innerHTML +=
'<td> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M3 8v16h18v-16h-18zm5 12c0 .552-.448 1-1 1s-1-.448-1-1v-8c0-.552.448-1 1-1s1 .448 1 1v8zm5 0c0 .552-.448 1-1 1s-1-.448-1-1v-8c0-.552.448-1 1-1s1 .448 1 1v8zm5 0c0 .552-.448 1-1 1s-1-.448-1-1v-8c0-.552.448-1 1-1s1 .448 1 1v8zm4-15.375l-.409 1.958-19.591-4.099.409-1.958 5.528 1.099c.881.185 1.82-.742 2.004-1.625l5.204 1.086c-.184.882.307 2.107 1.189 2.291l5.666 1.248z"/></svg></td>';
}
});
};
答案 0 :(得分:4)
使用forEach
遍历.js-tr
,然后创建一个元素td
,将svg设置为td的子元素,然后将其附加到js-tr
的每个元素中。
const tableRow = document.querySelectorAll('.js-tr');
tableRow.forEach(function (el) {
const td = document.createElement('td');
td.innerHTML = '<td> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M3 8v16h18v-16h-18zm5 12c0 .552-.448 1-1 1s-1-.448-1-1v-8c0-.552.448-1 1-1s1 .448 1 1v8zm5 0c0 .552-.448 1-1 1s-1-.448-1-1v-8c0-.552.448-1 1-1s1 .448 1 1v8zm5 0c0 .552-.448 1-1 1s-1-.448-1-1v-8c0-.552.448-1 1-1s1 .448 1 1v8zm4-15.375l-.409 1.958-19.591-4.099.409-1.958 5.528 1.099c.881.185 1.82-.742 2.004-1.625l5.204 1.086c-.184.882.307 2.107 1.189 2.291l5.666 1.248z"/></svg></td>';
el.appendChild(td);
})
更新: 这是带有onclick事件的代码段:
const tableRow = document.querySelectorAll('.js-tr');
tableRow.forEach(function (el) {
const td = document.createElement('td');
td.className = 'hidden';
td.style.cursor = 'pointer';
td.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M3 8v16h18v-16h-18zm5 12c0 .552-.448 1-1 1s-1-.448-1-1v-8c0-.552.448-1 1-1s1 .448 1 1v8zm5 0c0 .552-.448 1-1 1s-1-.448-1-1v-8c0-.552.448-1 1-1s1 .448 1 1v8zm5 0c0 .552-.448 1-1 1s-1-.448-1-1v-8c0-.552.448-1 1-1s1 .448 1 1v8zm4-15.375l-.409 1.958-19.591-4.099.409-1.958 5.528 1.099c.881.185 1.82-.742 2.004-1.625l5.204 1.086c-.184.882.307 2.107 1.189 2.291l5.666 1.248z"/></svg>';
el.appendChild(td);
td.onclick = function () {
if (this.classList.contains('hidden')) {
this.classList.remove('hidden');
} else {
this.classList.add('hidden');
}
}
})
.hidden svg {
opacity: 0;
visibility: hidden;
}
.hidden {
background-color: red;
}
<table>
<tr class="js-tr">
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>