好的,我正在做一个学习 Javascript 的练习,我需要制作一个简单的数独应用程序。有一个创建数独字段的函数,每个小方块都在一个 div 中,其 id 标识行号和列号。
现在的想法是,如果用户单击一个打开的字段,则会出现一个提示,要求他/她输入一个数字。如果数字介于 1 和 9 之间,则该数字将显示在字段内。
我首先像这样调用函数:
node.onclick=function(){fillNumber(this.id);};
这产生了意想不到的副作用,即每当执行单击时提示框会连续出现 3 次。然而,很明显,用户的第一个输入被接受、存储并添加到 div 中,就像它应该做的那样。第二个和第三个提示框的输入完全丢失了。
我通过使用以下调用解决了这个问题:
node.onclick=function(){if (parseInt(this.id) > 0) fillNumber(this.id);};
但是我不知道为什么会这样(这是从一个这样做的同学那里复制的,但不知道为什么)。的值this.id
总是这样的:“11”、“12”、“13”、“21”、“22”……所以我什至看不到首先将其解析为 int 或检查的意义它是否大于 0。据我所知,它总是一个 int 并且大于 0。无论如何,方法本身的代码没有改变,并且使用完全相同的参数值调用该方法。
这是方法fillNumber:
function fillNumber(id){
var input = -1;
do{
input = parseInt(prompt("Enter a number between 1 and 9: ", ""));
}while(input < 1 || input > 10);
var i = parseInt(id/10), j = id%10;
numbers[i][j] = input;
var tekst = document.createTextNode(numbers[i][j]);
document.getElementById(tekst).appendChild(tekst);
}
谁能给我解释一下?