Javascript计数

时间:2014-02-19 09:34:33

标签: javascript html arrays math

这可能是一个非常简单的解决方案,但浏览其他问题和互联网对我没有任何帮助。

我制作了一个javascript函数,它会从数组中给出一个随机值及其相应点:

function random_card(){
    var rand = Math.floor(Math.random()*cards.length);
    var html = "card: "+cards[rand][0]+"<br/>points: "+cards[rand][1]+"<br/><br/>";
    document.getElementById("Player").innerHTML += html;
    var punten = cards[rand][1];
    document.getElementById("Points").innerHTML += punten;
}

我添加了+= punten,所以我可以看到它正常工作。它通过id点向我显示了div中的所有点。

但是我想要做的就是把它们全部计算在一起,所以如果我要绘制4,King和10它应该显示24而不是41010。

提前致谢!如果您遗漏任何信息,请告诉我

3 个答案:

答案 0 :(得分:4)

目前你只是在一起添加字符串,它们连接在一起(连接在一起)因此你最终得到了41010.你需要获取当前的innerHTML(总数)并使用parseInt()将字符串转换为数字,然后添加已选择的新卡,然后将此新值分配给元素的innerHTML。

尝试以下

function random_card(){
    var rand = Math.floor(Math.random()*cards.length);
    var html = "card: "+cards[rand][0]+"<br/>points: "+cards[rand][1]+"<br/><br/>";
    document.getElementById("Player").innerHTML += html;
    var punten = cards[rand][1];

    var curPoints = parseInt(document.getElementById("Points").innerHTML, 10) || 0;
    var total = curPoints + parseInt(punten, 10);
    document.getElementById("Points").innerHTML = total;
}

有关parseInt() here

的更多信息

修改

我添加了这一行 -

var curPoints = parseInt(document.getElementById("Points").innerHTML, 10) || 0;

哪个会尝试转换“Points”div的innerHTML,但是如果它是空的(空字符串转换为false),则curPoints将等于0.这应该可以解决div的问题。启动。

答案 1 :(得分:0)

innerHTML是一个字符串,JavaScript使用+作为数字加法的字符串连接。

var pointsInHtml = parseInt(document.getElementById("Points").innerHTML, 10); 
pointsInHtml += punten;
document.getElementById("Points").innerHTML = punten;

The second parameter 10 of the parseInt method通常是一个好主意,以避免函数将其解析为八进制。

保留一个点变量可能更容易,并且只在最后将它放在#Points容器中,这将使parseInt不再需要

答案 2 :(得分:0)

innerHTML将是一个字符串,因此您需要在添加卡值之前将其转换为整数:)

function random_card(){
    var rand = Math.floor(Math.random()*cards.length);
    var html = "card: "+cards[rand][0]+"<br/>points: "+cards[rand][1]+"<br/><br/>";
    document.getElementById("Player").innerHTML += html;
    var punten = cards[rand][1],
        curPunten = parseInt(document.getElementById('Points').innerHTML);
    document.getElementById("Points").innerHTML = curPunten + punten;
}