gpt4 book ai didi

javascript - 在用 javascript 和 html 构建的网格中,如何为网格中满足条件的所有单元格分配新的文本节点值

转载 作者:行者123 更新时间:2023-12-03 02:07:22 25 4
gpt4 key购买 nike

我对使用 JS 和 html 进行 DOM 操作还比较陌生。在这里,我必须构建一个 10 * 10 网格,每个单元格中的连续数字代表其文本节点。要求是,当我单击网格中的任何单元格时,如果其文本节点值为 5 或 5 的倍数,则该单元格以及网格中所有其他为 5 的倍数的单元格的文本节点应该替换为“**”。

到目前为止,这是我的代码,但我只是未能在单击事件上实现单元格文本节点值的条件替换。这是我的jsfiddle非常感谢。

<html>

<head>
<meta charset="utf-8">
<title>Grid with random numbers</title>
<style>
#grid {
margin: 10px;
font-size: 1.25em;
}

table {
border-collapse: collapse;
border: 1px solid #7f7f7f;
}

td {
border: 1px solid #7f7f7f;
width: 50px;
height: 50px;
text-align: center;
}
</style>
</head>

<body>
<div id="grid"></div>
<script>
let totalRows = 10;
let cellsInRow = 10;
let min = 1;
let max = 100;

function drawTable() {
let cellNumber = 1;
let grid = document.getElementById('grid');
let tbl = document.createElement("table");


// Create rows in the table
for (var r = 0; r < totalRows; r++) {
let row = document.createElement("tr");
row.setAttribute('id', (r));

// In each row now create cells
for (var c = 0; c < cellsInRow; c++) {
let cell = document.createElement("td");
let cellText = document.createTextNode(cellNumber++);
let cellFillingStar = document.createTextNode("**");

// each cell should have its 'id' attribute set, as its corresponding cellText value
cell.setAttribute('id', (cellNumber - 1));

cell.appendChild(cellText);
row.appendChild(cell);

// Code to check that each cell got its 'id' attribute set, as its corresponding cellText value.
cell.addEventListener(
"click",
function(e) {
var id = e.target.id;
if (id % 5 == 0) {
$('.table').each(function() {
$(this).find('id').each(function() {
alert("Multiple of 5");
cell.appendChild(cellFillingStar);
})
})
}
},
false);
}
tbl.appendChild(row);
}
grid.appendChild(tbl);
}
window.onload = drawTable;
</script>
</body>

最佳答案

首先,您的脚本中存在一些错误,例如您试图在不存在的 .table 对象上循环,因为 table 没有类。

我尝试使用 jquery 来简化它。

我添加的主要片段是这个:

$( "#grid table tr td" ).on( "click", function(event) {
var id = event.target.id;
if (id % 5 == 0) {
$( "#grid table tr td" ).each(function( index ) {
if ($(this).text() % 5 == 0) {
$(this).text($(this).text()+'**');
}
});
}
});

将事件分配给所有 td 元素,然后根据其内容或 id 值,更改所有 5 倍数的相关 td 的文本。

这是完整的工作示例:

https://jsfiddle.net/xpvt214o/88139/

关于javascript - 在用 javascript 和 html 构建的网格中,如何为网格中满足条件的所有单元格分配新的文本节点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49751047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com