繁体   English   中英

.innerHTML无法更新Javascript中的HTML

[英].innerHTML not updating HTML in Javascript

在石头剪刀布作业上工作,其中全局变量根据计算机或人类获胜而向前递增。 我的功能运行正常,但是使用.innerHTML时记分板不会更新。 有什么建议么?

document.getElementById("humanScore").innerHTML = humanTotal;
document.getElementById("computerScore").innerHTML = compTotal;

http://codepen.io/anon/pen/GvpaJ

您遇到了一些问题。

在play函数中,您没有使用computerChoice变量执行任何computerChoice ,这应该是对compPlay()函数调用的结果。 目前,它是var computerChoice = compPlay ,实际上是将computerChoice分配给一个函数,而不是函数的结果。

其次,在测试if语句时,您正在再次检查值compPlay ,这是一个函数,我认为应该是computerChoice

第三。 compPlay的返回值是一个索引,它应该来自compOptions数组的该索引值

下面的更新代码

var humanTotal =0;                                          
var compTotal=0;                                    

document.getElementById("rock").onclick = setRock;
document.getElementById("paper").onclick = setPaper;
document.getElementById("scissors").onclick = setScissors;

function setRock(){
    play("rock")
}

function setPaper(){
    play("paper")
}

function setScissors(){
    play("scissors")
}    

function play(humanChoice) {    
    var computerChoice = compPlay(); //<-- Change Here

    //And all the following if statements to check the computer choice
    if (humanChoice == "rock"){
        if (computerChoice  =="rock"){
        } else if (computerChoice =="scissors"){
            humanTotal++; 
        } else if (computerChoice =="paper"){
            compTotal++;
        }
    }

    if (humanChoice == "paper"){
        if (computerChoice  =="paper"){
        } else if (computerChoice =="rock"){
            humanTotal++; 
        } else if (computerChoice =="scissors"){
        compTotal++;
        }
    }

    if (humanChoice == "scissors"){
        if (computerChoice  =="scissors"){
        } else if (computerChoice =="paper"){
            humanTotal++; 
        } else if (computerChoice =="rock"){
            compTotal++;
        }
    }

    document.getElementById("humanScore").innerHTML = humanTotal;
    document.getElementById("computerScore").innerHTML = compTotal;

}   


function compPlay (){
    var compOptions = ['rock', 'paper', 'scissors'];    
    var randomChoice = Math.floor(Math.random()*compOptions.length);
    return compOptions[randomChoice]; //<-- Change Here

}

它与innerHTML无关,工作正常,只是分数始终为零。 原因是因为测试“ rock”,“ paper”或“ scissors”的if语句都没有解析为true,因为计算机选择未匹配“ rock”,“ paper”或“ scissors”,所以抱歉,这是您的职能。

您的功能无法正常工作。 innerHTML -part的工作原理应像这样(证明: http ://codepen.io/anon/pen/qlIsG)。

问题是您在游戏逻辑中犯了一些错误,导致记分板每次都以0-0结束。

祝您工作顺利。

您有几个错误,这不是innerHTML的问题:

1)更改此设置,然后使用computerChoice检查计算机播放

 var computerChoice = compPlay();

2)在您的compPlay函数中,更改以下内容:

return compOptions[randomChoice]; // you want the play, not the random number

工作版本:

http://codepen.io/juvian/pen/pLqxD

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM