我被问到为什么我的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.现在我有了如何隐藏蓝宝石而不会弄乱代码的问题。答案 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)
进行更改以使代码正常工作:
===
(比较运算符)代替=
(仅用于分配)$("#images")
,它没有您刚刚点击的图像的概念)++money
替换为money + 1
(递增变量以及重新分配它只是听起来有点麻烦,虽然它在技术上可行)但parseInt
will use decimal (base 10) – always provide the base as the second argument 代码:
<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>