gpt4 book ai didi

javascript - 如何一起选择每个数据属性的随机值来选择随机单元格?

转载 作者:行者123 更新时间:2023-12-04 09:18:05 24 4
gpt4 key购买 nike

我有一个动态创建的表格,并为每个单元格的行和列属性提供了 0-9(10X10 表)之间的数字,称为 data-x、data-y。
我想选择一个随机数据-x 和数据-y(具有空类),然后将该单元格分配给另一个类。
我知道我可以通过随机选择单元格本身来以更简单的方式完成它,但由于某种原因它需要以这种方式完成。
我为 0-9 之间的随机数创建了变量,但真的不知道它们如何连接到我的 data-x/y 以执行上述操作。
任何人都可以就最简单的方法给我建议吗?
谢谢

$( document ).ready(function() {
var body = document.getElementsByTagName("body")[0];
var table = document.createElement('TABLE');
var tblB = document.createElement('TBODY');
table.appendChild(tblB);
var num = [1];

for (var i = 0; i <10; i++) {
var tr = document.createElement('TR');
tblB.appendChild(tr);
$(tr).attr('data-x', i)

for (var j=0; j<10; j++) {
var td = document.createElement('TD');
tr.appendChild(td);
td.append(num++);
$(td).attr('data-y', j);
}
}
body.appendChild(table);

var randomRow = Math.floor(Math.random() * 9);
var randomCol = Math.floor(Math.random() * 9);
//How to select a <td> of random data-x,data-y with these randomRow and randomCol numbers
//$(td).???
console.log(randomCol, randomRow);

//Give all cells a class of empty to start
$("td").addClass('empty');
var obs = 0;
while (obs <= 10) {
//Find random row and column that has class empty, add Class(dimmed) to that random row and column (eg. 2 1)
// var randomRow = Math.floor(Math.random() * 9);
// var randomCol = Math.floor(Math.random() * 9);
// console.log(randomNum + randomCol);
obs++
}
})
table td {
padding: 25px;
border: 5px solid red;
}

table {
margin: auto;
}

.dimmed {
background: black;
}
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="style.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="script.js"></script>
</head>
<body bgcolor="lightblue">
<center>
<h1>Create table in a dynamic way using javascript</h1>
</center>
<CENTER>
<div id=TBL></div>
</CENTER>
</body>
</html>

最佳答案

如果你的 x 和 y 总是从 0 到 9 迭代,你真的不需要添加这些属性,因为你的行和单元格已经被索引了。
正如您似乎在使用 jquery,这只是在没有任何属性的情况下工作:

var randomRow = Math.floor(Math.random() * 9);
var randomCol = Math.floor(Math.random() * 9);

$("#TBL tr:eq(" + randomRow + ") td:eq(" + randomCol + ")").removeClass("empty").addClass("newclass");
或者为了在现代浏览器中获得更好的性能
$("#TBL tr").eq(randomRow).children("td").eq(randomCol)
有更多关于你想要实现的信息,我最好构建一个数组:
var cells = array[];
while (cells.length < 10) {
var cell = Math.random() * 99;
if(!cells.includes(cell)) cells[] = cell;
}

cells.foreach(function(item) {
$("#TBL td").eq(item).removeClass("empty").addClass("newclass");
});
您构建了一个具有 10 个唯一单元号的 10-len 阵列;然后为数组的每个元素标记对应的单元格。请注意 td 选择器而不是 tr ,它将检索单个集合中的所有单元格。

关于javascript - 如何一起选择每个数据属性的随机值来选择随机单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63151018/

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