我正在尝试找到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);
}
.innerHTML
属性返回字符串。您需要将其转换为一个数字,否则它与数字数组元素("1" !== 1
)不匹配:
// using unary plus operator:
var tileNum = +this.innerHTML;
// OR:
var tileNum = Number(this.innerHTML);
内部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>
只是将字符串解析为数字,以便它可以工作
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();