变量不工作的算术

时间:2016-02-08 08:51:09

标签: javascript string variables numbers integer

由于某种原因,函数updateScore(result)中的算术不能正常工作(稍后在代码中调用该函数)。 winstieslosses按原样打印,但lives打印为 NaN 。我知道 NaN 的含义。我还发现,由于某种原因,变量是作为字符串创建的。对我来说似乎很奇怪的是,它为五个变量中的四个工作。没有一致性。我已尝试使用Number(lives)进行一些数字转换,但这也无效。有关如何确保将变量创建为数字的任何建议,以及aritmethic操作是否有效?

var wins = 0,
    ties = 0,
    losses = 0,
    lives = 5,
    previouscpuChoice = 0;

$("#startknapp").click(function(){
    var spiller = prompt("Hva heter du?");
    $("#userSelect").html(userMenu);
    $("#result").html("<h4>Velg figur, " + spiller + "</h4>");
    $("#status").html('<h4>Liv: <span id="life">' +lives+ '</span> - Seire: <span id="win">' + wins + '</span> - Uavgjort: <span id="tie">' + ties + '</span> - Tap: <span id="lose">' + losses + '</span>');
    console.log(typeof "lives");
    console.log(typeof "wins");
    });

function updateScore(result) {
    tie = document.getElementById("tie");
    win = document.getElementById("win");
    lose = document.getElementById("lose");
    lives = document.getElementById("life");
    console.log(typeof "wins");
    var imgSrc = "images/" + userChoice + "-" + result + ".png";

    if (result === "tie") {
    ties = ties + 1;
    tie.innerHTML = ties;
    $('.result-img').attr('src', 'images/tie.png');
    }

    if (result === "vant") {
    wins++;
    $('.result-img').attr('src', imgSrc);
    }

    if (result === "tapte") {
    losses++;
    lives--;
    lose.innerHTML = losses;
    life.innerHTML = lives;
    $('.result-img').attr('src', imgSrc);
    }
};

2 个答案:

答案 0 :(得分:1)

您是否尝试过以下操作?

var tie = parseInt(document.getElementById("tie").value);

您当前的代码:

document.getElementById("tie")

检索DOM元素而不是输入值。因此您需要使用.value,然后将其解析为整数,因为输入值可能是您想要的数字的字符串表示,而不是整数值。

答案 1 :(得分:1)

在思考之后,我认为如果变量是字符串就可以,并从不同的角度看代码。你知道什么,这是一个简单的错误。

$("#startknapp").click(function(){
    var spiller = prompt("Hva heter du?");
    $("#userSelect").html(userMenu);
    $("#result").html("<h4>Velg figur, " + spiller + "</h4>");
    $("#status").html('<h4>Liv: <span id="life">' +lives+ '</span> - Seire: <span id="win">' + wins + '</span> - Uavgjort: <span id="tie">' + ties + '</span> - Tap: <span id="lose">' + losses + '</span>');
    console.log(typeof "lives");
    console.log(typeof "wins");
    });

function updateScore(result) {
    tie = document.getElementById("tie");
    win = document.getElementById("win");
    lose = document.getElementById("lose");
    life = document.getElementById("life");

最初updateScore(结果)的最后一行是:

    lives = document.getElementById("life");

结果两个变量混合(本地一个用于函数(生命)和全局一个(生命)。所以最后它是一个错字。但是,我仍然被一个变量的事实所吸引可以是一个字符串,并且该值包含在整数中。