试着自己做一个Paper,Rock,Scissors游戏

时间:2013-12-25 22:57:03

标签: javascript jquery

我是一个javascript和jQuery初学者(就像在短短一周内),我需要一些有经验的人来告诉我这段代码有什么问题。单击div不会执行任何操作。我可以谷歌几个小时,但你们可能会更快地看到问题的方式,我将能够从错误中学习并继续前进。在我的代码中,我用“console.log”替换了最后一个命令,并将所有内容复制/粘贴到textedit中,看看当我点击时它是否会在控制台中给我“回答”。但我一无所获。提前谢谢你们。

我的代码是here

......在这里

var box = "div";

$(document).ready(

function () {
    $(box).fadeTo(1000, 0.8);
});



$(box).click(

function () {
    var userchoice = this.id;
    var answer;
    var computerchoice = Math.floor(Math.random() * 3 + 1);

    if (computerchoice === 1) {
        computerchoice = "rock";
    }

    if (computerchoice === 2) {
        computerchoice = "paper";
    }

    if (computerchoice === 3) {
        computerchoice = "scissors";
    }

    if (userchoice === computerchoice) {
        answer = "It's a tie.";
    }
    if (userchoice === "rock") {
        if (computerchoice === "paper") {
            answer = "Computer Wins with " + computerchoice + ".";
        } else {
            answer = "You win with " + userchoice + ".";
        }
    }
    if (userchoice === "paper") {
        if (computerchoice === "scissors") {
            answer = "Computer Wins with " + computerchoice + ".";
        } else {
            answer = "You win with " + userchoice + ".";
        }
    }
    if (userchoice === "scissors") {
        if (computerchoice === "rock") {
            answer = "Computer Wins with " + computerchoice + ".";
        } else {
            answer = "You win with " + userchoice + ".";
        }
    }
    document.getElementById("header").innerHTML(answer);
});

1 个答案:

答案 0 :(得分:3)

如果你检查浏览器的JS控制台,你会看到这个错误:

Uncaught TypeError: Property 'innerHTML' of object #<HTMLHeadingElement> is not a function 

这告诉您.innerHTML是您要为其分配值的属性,而不是要调用的函数,因此您需要更改此行:

document.getElementById("header").innerHTML(answer);

为:

document.getElementById("header").innerHTML = answer;

演示:http://jsfiddle.net/CUTez/15/

但是既然你正在使用jQuery,你可以这样做:

$("#header").html(answer);

另请注意,如果在jsfiddle外部运行相同的代码,则需要在文档就绪处理程序中移动$(box).click(...)代码,或者在关闭之前将整个脚本元素放在页面的末尾{{ 1}}标记,否则</body>部分将找不到任何元素,因为它们尚未被解析。 (它适用于小提琴,因为默认情况下,jsfiddle将所有代码放在onload处理程序中。)