Javascript 将局部变量传递给引用的方法

Javascript 将局部变量传递给引用的方法,javascript,Javascript,我正在尝试创建一个函数,该函数将一个变量从window.onload函数传递到另一个函数的引用。我希望我的window.onload中的var I用作markTheSquare函数定义中I的实际参数。很抱歉,我忘了在OP中添加这个,但是规范明确指出markTheSquare没有任何正式参数 var-boardState; var markCount;//存储标记数值的全局变量。 var Winning组合; window.onload=函数() { var i; i=0; markCount=s

我正在尝试创建一个函数,该函数将一个变量从window.onload函数传递到另一个函数的引用。我希望我的window.onload中的var I用作markTheSquare函数定义中I的实际参数。很抱歉,我忘了在OP中添加这个,但是规范明确指出markTheSquare没有任何正式参数

var-boardState;
var markCount;//存储标记数值的全局变量。
var Winning组合;
window.onload=函数()
{
var i;
i=0;
markCount=setMarkCount(0);//调用mutator函数setMarkCount将markCount的值更改为0。
winningCombinations=“01234567803616147258246048”;
boardState=“01234567803616147258246048”;
而(i<9)
{
document.getElementById(“框”+i).onclick=markTheSquare;
i=i+1;
}
}
函数markTheSquare()//使用this关键字将“X”连接到当前元素的内部HTML。
{
this.onclick=null;//解除onclick函数与clicked()的关联
this.innerHTML=getXorO();//将getXorO的结果连接到元素的当前innherHTML。
updateBoardState(getXorO(),i);
alert(updateBardState(getXorO(),i));
setMarkCount(getMarkCount()+1)//将markCount增加1。
}
函数updateBoardState(getXorO,squareNumber)
{
var boardState;
var-loc;
var赢家;
winners=GetWinning组合();
boardState=getBoardState()
loc=优胜者指数(平方数);
squareNumber=“”+squareNumber;
而(loc>=0)
{
替换字符设置(boardState、loc、getXorO);
loc=优胜者指数(平方数);
}
返回setBoardState(boardState);
}

您应该将
标记正方形
作为生成闭包的工厂。大概是这样的:

function markTheSquare(i) {
    return function() {
       //...
       updateBoardState(getXorO(), i);
       //...
    }
}
分配给clickhandler的任务是:

document.getElementById("box" + i).onclick = markTheSquare(i);

对不起,我忘了在OP中添加这个,但是规范明确地说markTheSquare没有任何正式参数。我不得不说规范是错误的。没有任何规范要求您使用共享状态传递数据,但如果您确实需要,您可以使用全局/共享变量,或者通过解析元素的ID来获取
i
。这两种方法都不如使用参数。您可以更改
标记正方形
方法定义的位置,例如@ArunPJohny No we can。@user2009653;如果你想在你的问题中增加要求,你最好把它们都列出来。什么是/不允许的,为什么不允许?您可以控制什么?我们不能再创建任何全局变量和标记方形可以没有参数,也不能返回值。就是这样。@user2009653:然后从元素的ID中解析出
i
。这很愚蠢,但是如果你的导师想让你跳过这个愚蠢的圈套,我想你被卡住了。你能给我举个例子吗?我想用这个.id,然后用它来做。
document.getElementById("box" + i).onclick = markTheSquare(i);