这是我的代码:
var row = [
[4, 7, 2, 6, 2, 1, 9, 0],
[6, 1, 5, 0, 4, 3, 7, 1],
[0, 3, 2, 1, 8, 2, 8, 4],
[8, 9, 4, 5, 3, 0, 5, 0],
[4, 6, 7, 8, 6, 7, 3, 9],
[9, 3, 2, 0, 1, 5, 8, 7],
[6, 1, 9, 7, 4, 9, 2, 4],
[2, 8, 6, 5, 3, 0, 6, 5],
[0, 3, 4, 8, 2, 5, 3, 9]
];
var text = "<table id='swertrestable'>";
for (i = 0; i < 9; i++) {
text += "<tr>";
for (x = 0; x < 8; x++) {
text += "<td>" + row[i][x] + "</td>";
}
text += "</tr>";
}
text += "</table>";
document.getElementById("demo").innerHTML = text;
function findNumbers() {
var lastcombination = document.getElementById('lastresult').value;
var output = [];
var sNumber = lastcombination.toString();
for (var y = 0, len = sNumber.length; y < len; y += 1) {
output.push(+sNumber.charAt(y));
}
var no1 = parseInt(output[0]);
var no2 = parseInt(output[1]);
var no3 = parseInt(output[2]);
var table = document.getElementById("swertrestable");
var rows = table.getElementsByTagName("tr");
for (var i = 0, row; row = table.rows[i]; i++) {
for (var j = 0, col; col = row.cells[j]; j++) {
rows[i].cells[j].classList.remove("red");
if (parseInt(col.innerHTML) == no1 || parseInt(col.innerHTML) == no2 || parseInt(col.innerHTML) == no3) {
rows[i].cells[j].className = 'red';
}
}
}
}
table,
th,
td {
border: 2px solid black;
border-collapse: collapse;
}
td {
padding: 10px 20px;
}
td.red {
color: #fff;
background-color: #f00;
}
td.blue {
color: #fff;
background-color: #3498db;
}
td.redtoblue {
color: #fff;
background-color: #3498db;
}
<p id="demo"></p>
<h2>INPUT 3 DIGITS</h2><br>
<input type="text" name="lastresult" id="lastresult">
<button onclick="findNumbers()">Submit</button>
它的作用是迭代表,获取表的值并将其与no1
,no2
或no3
进行比较,如果相等,它将添加一个名为{{ 1}},将单元格的背景颜色更改为红色。
现在,我只想将类添加到3个相邻单元格的组合中(顶部,底部,左侧,右侧)。我认为下面的图片会更清晰。
此循环的正确循环是什么?
答案 0 :(得分:0)
不是太经典的解决方案,但是有效!请尝试。
var row = [
[4, 7, 2, 6, 2, 1, 9, 0],
[6, 1, 5, 0, 4, 3, 7, 1],
[0, 3, 2, 1, 8, 2, 8, 4],
[8, 9, 4, 5, 3, 0, 5, 0],
[4, 6, 7, 8, 6, 7, 3, 9],
[9, 3, 2, 0, 1, 5, 8, 7],
[6, 1, 9, 7, 4, 9, 2, 4],
[2, 8, 6, 5, 3, 0, 6, 5],
[0, 3, 4, 8, 2, 5, 3, 9]
];
var text = "<table id='swertrestable'>";
for (i = 0; i < 9; i++) {
text += "<tr>";
for (x = 0; x < 8; x++) {
text += "<td>" + row[i][x] + "</td>";
}
text += "</tr>";
}
text += "</table>";
document.getElementById("demo").innerHTML = text;
function findNumbers() {
// remove previous red or blue classes
var elems = document.querySelectorAll(".blue");
[].forEach.call(elems, function(el) {
el.classList.remove("blue");
});
var elems = document.querySelectorAll(".red");
[].forEach.call(elems, function(el) {
el.classList.remove("red");
});
var lastcombination = document.getElementById('lastresult').value;
var output = [];
var sNumber = lastcombination.toString();
for (var y = 0, len = sNumber.length; y < len; y += 1) {
output.push(+sNumber.charAt(y));
}
var no1 = parseInt(output[0]);
var no2 = parseInt(output[1]);
var no3 = parseInt(output[2]);
var numArr = new Array(no1,no2,no3);
var rightCell, leftCell, topCell, bottomCell, thisCell;
var table = document.getElementById("swertrestable");
var rows = table.getElementsByTagName("tr");
for (var i = 0, row; row = table.rows[i]; i++) {
for (var j = 0, col; col = row.cells[j]; j++) {
//rows[i].cells[j].classList.remove("red");
rows[i].cells[j].classList.remove("blue");
thisCell = parseInt(col.innerHTML);
if(row.cells[j+1]) {
rightCell = parseInt((row.cells[j+1]).innerHTML);
}
else {
rightCell = "" ;
}
if(row.cells[j-1]) {
leftCell = parseInt((row.cells[j-1]).innerHTML);
}
else {
leftCell = "";
}
if(rows[i-1]) {
topCell = parseInt((rows[i-1].cells[j]).innerHTML);
}
else {
topCell = "";
}
if(rows[i+1]) {
bottomCell = parseInt((rows[i+1].cells[j]).innerHTML);
}
else {
bottomCell = "";
}
//if (parseInt(col.innerHTML) == no1 || parseInt(col.innerHTML) == no2 || parseInt(col.innerHTML) == no3) {
var thisNum = numArr.indexOf(thisCell);
if( thisNum !== -1) {
var neighbours = 0;
if ((topCell == no1 || topCell == no2 || topCell == no3) && topCell!=thisCell) {
neighbours++;
}
if ((leftCell == no1 || leftCell == no2 || leftCell == no3) && leftCell!==thisCell) {
neighbours++;
}
if ((rightCell == no1 || rightCell == no2 || rightCell == no3) && rightCell!==thisCell) {
neighbours++;
}
if ((bottomCell == no1 || bottomCell == no2 || bottomCell == no3) && bottomCell!==thisCell) {
neighbours++;
}
if(neighbours===2) {
if(topCell!=="" && numArr.indexOf(topCell)!== -1 ) { rows[i-1].cells[j].className = 'red';}
if(leftCell!=="" && numArr.indexOf(leftCell)!== -1) { rows[i].cells[j-1].className = 'red'; }
if(rightCell!=="" && numArr.indexOf(rightCell)!== -1) { rows[i].cells[j+1].className='red'; }
if(bottomCell!=="" && numArr.indexOf(bottomCell)!== -1) { rows[i+1].cells[j].className = 'red'; }
rows[i].cells[j].className = 'red';
}
else {
var thisClass = rows[i].cells[j].className;
if(thisClass != 'red') {
rows[i].cells[j].className = 'blue';
}
}
}
}
}
}