我对索引的使用是什么问题



我正在尝试找到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();

相关内容

最新更新