【发布时间】:2019-02-16 23:37:48
【问题描述】:
问题
由于它们的坐标,我如何比较两个相邻的单元格?
对我有帮助的文档
我已经看到了这些问题,它们帮助了我,但它们与我的情况不同:
- question on stackOverflow
- question on stackOverflow
- question on stackOverflow
- Mds documentation to build a dynamic table
代码
我有一个动态生成的表格
function tableGenerate(Mytable){
for(var i = 0; i < myTable.length; i++) {
var innerArrayLength = myTable[i].length;
for(var j = 0; j<innerArrayLength; j++){
if(myTable[i][j] === 0){
myTable[i][j]="x";
}else{
myTable[i][j]="y";
};
};
$("#aTable").append("<tr><td>"+ myTable[i].join('</td><td>') + "</td></tr>")
}
}
关于actualPositionrow和cell中感兴趣的单元格(两个全局变量)有随机值
var mainTd = {
name: 'interestedValue',
actualPosition:{
row: 5,
cell: 4
}
};
var otherMainTd = {
actualPosition:{
row: 2,
cell: 3
}
};
代码的最后部分是这样工作的:
- 我将 selectedTd 的位置保存在两个不同的变量中
- 我创建了二维数组
directions,其坐标是与selectedTd相关的邻近单元格的坐标 - 输入第一个
if,比较两个单元格。如果其中一个坐标相同,则输入最后一个if。
function compare(selectedTd) {
let tdRow = selectedTd.actualPosition.row;
let tdCell = selectedTd.actualPosition.cell;
let directions = [
[tdRow - 1, tdCell],
[tdRow + 1, tdCell],
[tdRow, tdCell + 1],
[tdRow, tdCell - 1]
]; //these are the TD near the mainTd, the one i need to compare to the others
let tdToCompare = [];
if (selectedTd.name === 'interestedValue') {
tdToCompare = [otherMainTd.actualPosition.row, otherMainTd.actualPosition.cell];
for (let i = 0; i < directions.length; i++) {
if (directions[i] == tdToCompare) {
console.log('you are here');
}
}
} else {
tdToCompare = [mainTd.actualPosition.row, mainTd.actualPosition.cell];
for (let i = 0; i < directions.length; i++) {
if (directions[i] === tdToCompare) {
console.log('you are here');
}
}
}
};
现在的主要问题是:我读取了坐标,我将它们存储在 2 个数组中,我可以读取它们但我无法输入 if 语句。
这就是我想要实现的:将blackTd 的坐标与红色边框td 的坐标进行比较。
Codepen
codepen 中感兴趣的函数名称不同,但结构与您在本文中看到的相同。我更改了原始名称,因为我认为使用通用名称而不是我选择的名称可能会更清楚。
感兴趣的函数是:
-
function fight(playerInFight)--->function compare(selectedTd) -
function mapGenerate(map)--->function tableGenerate(MyTable) -
mainTd和otherMainTd--->character和characterTwo
【问题讨论】:
-
您正在混合 == 和 ===。请记住,他们不会做同样的事情。使用 == 除非您还需要比较变量的类型。如果您有兴趣,您会提到一个,但不太清楚您指的是哪一个。一共有三个,我猜是第一个,但最好指出哪个是
-
您的代码足够复杂,我建议您在 Fiddle 或类似服务上创建一个工作演示。
-
@JaviMollá - 始终建议使用
===。 -
哦,对不起。我完全错了。谢谢指出
-
@Legeo 只是一个建议/评论。创建表时,将
td内容分配给一个变量。然后,在 for 的末尾,将内容添加到 DOM。运行这一行$("#aTable").append("<tr><td>"+ myTable[i].join('</td><td>') + "</td></tr>")每一行,对浏览器的影响很大,因为您在每次迭代时都在更改 DOM。
标签: javascript jquery arrays html-table