Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当传递innerHTML和(this.id)时,循环不会终止_Javascript_Loops - Fatal编程技术网

Javascript 当传递innerHTML和(this.id)时,循环不会终止

Javascript 当传递innerHTML和(this.id)时,循环不会终止,javascript,loops,Javascript,Loops,我正在写一个函数,它应该用给定参数的某个值替换某个位置的某个字符。但是,当我试图调用另一个函数内部的函数时。这是一个家庭作业,我几乎可以肯定,我已经正确地写了循环,但感觉好像我看得太多了。this.id.charattthis.id.length-1应该获取元素id的最后一个字母,并将其传递给函数。this.innerHTML用于获取HTML的内容并将其传递到updateBoardState函数中 我的教授打字打错了 function updateBoardState(newMark, squa

我正在写一个函数,它应该用给定参数的某个值替换某个位置的某个字符。但是,当我试图调用另一个函数内部的函数时。这是一个家庭作业,我几乎可以肯定,我已经正确地写了循环,但感觉好像我看得太多了。this.id.charattthis.id.length-1应该获取元素id的最后一个字母,并将其传递给函数。this.innerHTML用于获取HTML的内容并将其传递到updateBoardState函数中


我的教授打字打错了

function updateBoardState(newMark, squareNumber)
{
    var boardState;
    var loc;
    var winners;

    winners = getWinningCombinations();
    boardState = getBoardState();

    loc = winners.indexOf(squareNumber);window.alert(loc);

    while(loc >= 0)
    {
        boardState = replaceCharacterInString(boardState, loc, newMark);
        loc = boardState.indexOf(squareNumber);
    }
    setBoardState(boardState);window.alert(setBoardState(boardState));
}

什么是ReplaceCharacterInstalling它将只替换字符串中的一个字符。示例:replaceCharacterInstallingHello,1,x应返回Hxllo。源是原始字符串,哪里是要替换的字符号,要替换的字符是什么。我认为问题是您正在替换loche的内容,而不是替换squareNumber,所以loc总是相同的数字?流程图上说搜索下一个出现的方号,并将字符号存储在匹配开始的位置。这是对updateBoardState函数的while循环内部的引用。
function updateBoardState(newMark, squareNumber)
{
    var boardState;
    var loc;
    var winners;

    winners = getWinningCombinations();
    boardState = getBoardState();

    loc = winners.indexOf(squareNumber);window.alert(loc);

    while(loc >= 0)
    {
        boardState = replaceCharacterInString(boardState, loc, newMark);
        loc = boardState.indexOf(squareNumber);
    }
    setBoardState(boardState);window.alert(setBoardState(boardState));
}