我试图找到div的innerHTML在数组中的位置。我正在制作一个15滑块游戏(它在4x4网格中加扰,你需要将它安排回来)。我能够成功获得1-15的瓦片编号(innerHTML),但是当我尝试找到它在全局数组中的位置时(非重复值0-15,0代表空白值),它只返回-1。你能看出我这样做有什么问题吗?
var grid = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ,15 ,0];
function move() {
var tileNum = this.innerHTML;
var ind = grid.indexOf(tileNum);
var blankInd = grid.indexOf(0);
console.log(tileNum);
console.log(ind);
console.log(blankInd);
}
答案 0 :(得分:2)
.innerHTML
属性返回一个字符串。您需要将其转换为数字或与数字数组元素("1" !== 1
)不匹配:
// using unary plus operator:
var tileNum = +this.innerHTML;
// OR:
var tileNum = Number(this.innerHTML);
答案 1 :(得分:1)
内部HTML总是返回一个字符串值作为结果。在找到索引之前,您必须将其解析为int。
<!DOCTYPE html>
<html>
<head>
<script>
var grid = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ,15 ,0];
function move() {
var tileNum = "5";
var ind = grid.indexOf(parseInt(tileNum));
var blankInd = grid.indexOf(0);
console.log(tileNum);
console.log(ind);
console.log(blankInd);
}
move();
</script>
</head>
</html>
&#13;
答案 2 :(得分:0)
只需将字符串解析为数字即可正常工作
var grid = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ,15 ,0];
function move() {
var tileNum = parseInt(this.innerHTML);
var ind = grid.indexOf(tileNum);
var blankInd = grid.indexOf(0);
console.log(tileNum);
console.log(ind);
console.log(blankInd);
}
move();