数组的JavaScript数组未在单击时交换图像

数组的JavaScript数组未在单击时交换图像,javascript,html,arrays,Javascript,Html,Arrays,我正在做一项任务,用图像填充网页的表格数据单元格,这些图像将在单击“交换位置”时将“英雄”磁贴移动到“获胜”磁贴。onClick将单元格位置传递给doClick方法,该方法将确保平铺交换不在表之外。然后将表单元格的行和列值传递给交换方法,以交换两个平铺的位置。但是,当我单击表的第1行第0列时,doClick行if(top!=-1&&cells[top][col].innerHTML==“”)的计算结果永远不会为true。这仅在将img scr元件传递到工作台位置时发生。当我只是替换一个字母或数字

我正在做一项任务,用图像填充网页的表格数据单元格,这些图像将在单击“交换位置”时将“英雄”磁贴移动到“获胜”磁贴。onClick将单元格位置传递给doClick方法,该方法将确保平铺交换不在表之外。然后将表单元格的行和列值传递给交换方法,以交换两个平铺的位置。但是,当我单击表的第1行第0列时,doClick行
if(top!=-1&&cells[top][col].innerHTML==“”)
的计算结果永远不会为true。这仅在将img scr元件传递到工作台位置时发生。当我只是替换一个字母或数字,而不是用img src元素时,这就行了。如有任何建议,将不胜感激

//在html body标记中调用它来设置js的数组
函数设置(){
单元格=新数组(
[
document.getElementById(“cell00”),
文件.getElementById(“cell01”),
文件.getElementById(“cell02”),
文件.getElementById(“cell03”),
document.getElementById(“cell04”)
], [
document.getElementById(“cell10”),
文件.getElementById(“cell11”),
document.getElementById(“cell12”),
文件.getElementById(“cell13”),
document.getElementById(“cell14”)
], [
文件.getElementById(“cell20”),
文件.getElementById(“cell21”),
文件.getElementById(“cell22”),
文件.getElementById(“cell23”),
document.getElementById(“cell24”)
], [
文件.getElementById(“cell30”),
文件.getElementById(“cell31”),
document.getElementById(“cell32”),
文件.getElementById(“cell33”),
document.getElementById(“cell34”)
], [
document.getElementById(“cell40”),
文件.getElementById(“cell41”),
document.getElementById(“cell42”),
文件.getElementById(“cell43”),
document.getElementById(“cell44”)
]
);
placeNumbers();//调用函数在单元格中放置值
}
函数placeNumbers(){
for(var rows=0;rows<5;rows++)//将数字数组的每个元素读入单元格数组
{
for(var cols=0;cols<5;cols++){
如果((行==0)和&(列==0)){
单元格[rows][cols].innerHTML=“;//这将保留hero的位置并插入图像
cols++;
}
如果((行==4)和&(列==4)){
单元格[rows][cols].innerHTML=“;//这将占据宝藏的位置并插入图像
打破
}否则{
单元格[行][cols].innerHTML=“”;
}
}
}
}
函数doClick(行、列){
var top=第1行;
var bottom=行+1;
左向量=col-1;
右var=col+1;
交换=假;
if(top!=-1&&cells[top][col].innerHTML==“”)
交换(单元格[行][col],单元格[顶][col]);
else if(右!=5&&cells[row][right].innerHTML==“”)
交换(单元格[行][列]、单元格[行][右];
else if(底部!=5&&cells[bottom][col].innerHTML==“”)
交换(单元格[行][col],单元格[底][col]);
else if(左!=-1&&单元格[行][左].innerHTML==“”)
交换(单元格[行][col],单元格[行][left]);
其他警告(“非法移动”);
}
函数交换(第一个单元格,第二个单元格){
交换=真;
secondCell.innerHTML=firstCell.innerHTML;
firstCell.innerHTML=“”;
}

你可以通过点击你的冠军周围的空牌来移动你的冠军。只允许向上、向下、向右或向左移动。不允许对角移动。目标是到达迷宫的尽头,拯救艾泽拉斯


作为编辑,我做了一些检查
innerHTML条件始终返回false,因此您必须记录其值以检查正确的值

InnerHTML返回

<img src="https://cdn.pixabay.com/photo/2017/06/22/20/32/background-2432434_960_720.jpg" width="50">

所以情况应该是这样的

if (top != -1 && cells[top][col].innerHTML == '<img src="https://cdn.pixabay.com/photo/2017/06/22/20/32/background-2432434_960_720.jpg" width="50">'){}
if(top!=-1&&cells[top][col].innerHTML==''”{}

您也可以使用
\n
,因为所提到的@NewToJS

似乎无效。它应该带引号。您的
src
属性缺少引号
同样,多亏了你们两位,您永远不会关闭span标签
!在引用img元素时使用“and”似乎是特定于其顺序的。
if(top!=-1&&cells[top][col].innerHTML='')现在的计算结果为true并进入交换方法。