为什么我的else / if语句不起作用?

时间:2014-09-19 21:42:16

标签: jquery if-statement

我被问到为什么我的if / else语句不能正常工作。当我运行代码时,如果图像是coal.png,我将它添加到总金额中,如果图像是sapphire.png则应该添加6,但由于某种原因它仍然只添加1。

带有我的else / if语句的代码块:

<script> /* When an image is clicked, money is added to the counter */
$(function() {
$('#images').click(function() {
    moneyCalc();
});

function moneyCalc() {
    var images = $("#images");
    var money = parseInt($("#Money").text());

    if(images = "coal") {
        money = isNaN(money) ? 0: ++money;
    }
    else if(images = "sapphire") {
        money = isNaN(money) ? 0: money + 6;
    }
    else {
        return false;
    }
    $("#Money").text(money);
}

function resetCounter() {
    $("#Money").text(0);
    }
});
</script>

图片代码:

<div id="images">
        <img id="coal" src="coal.png">
        <img id="sapphire" src="sapphire.png" hidden="true">
</div>

我知道我的蓝宝石图像是隐藏的,当我在获得50美元后单击按钮时,我的代码出现在我的代码中。

编辑:出于某些原因,我不喜欢隐藏蓝宝石图像然后用它替换煤炭。我删除了hidden =“true”,当我点击蓝宝石时,它添加了6.现在我有了如何隐藏蓝宝石而不会弄乱代码的问题。

2 个答案:

答案 0 :(得分:3)

JavaScript比较使用双等于==而非单=(定义)

[..]
if(images == "coal") {
    money = isNaN(money) ? 0: ++money;
}
else if(images == "sapphire") {
    money = isNaN(money) ? 0: money + 6;
}
else {
    return false;
}
[..]

根据您的评论进行的更新:

<script> /* When an image is clicked, money is added to the counter */
$(function() {
$('#images img').click(function() {
    moneyCalc( $(this).attr('id') );
});

function moneyCalc( images ) {
    var money = parseInt($("#Money").text());

    if(images == "coal") {
        money = isNaN(money) ? 0: ++money;
    }
    else if(images == "sapphire") {
        money = isNaN(money) ? 0: money + 6;
    }
    else {
        return false;
    }
    $("#Money").text(money);
}

function resetCounter() {
    $("#Money").text(0);
    }
});
</script>

答案 1 :(得分:1)

进行更改以使代码正常工作:

代码:

<script>
$(function() {
    $('#images img').click(function() {
        var imageName = $(this).attr("id");
        moneyCalc(imageName);
    });

    function moneyCalc(imageName) {
        var money = parseInt($("#Money").text(), 10);

        if(imageName === "coal") {
            money = isNaN(money) ? 0 : money + 1;
        } else if(imageName === "sapphire") {
            money = isNaN(money) ? 0 : money + 6;
        } else {
            return false;
        }
        $("#Money").text(money);
    }

    function resetCounter() {
        $("#Money").text(0);
    }
});
</script>

Working JSFiddle