Javascript 当用户尝试减法时,如果没有其他东西可以减法,请提醒用户

Javascript 当用户尝试减法时,如果没有其他东西可以减法,请提醒用户,javascript,operators,dom-events,counter,Javascript,Operators,Dom Events,Counter,我有一个带有两个按钮的页面: 一个向用户的库存中添加1个单位的东西 另一个从用户的库存中移除1个单位。 在这个例子中,有些东西是钻石 每次用户捡起或扔下钻石时,都会有一条消息告诉他总共有多少钻石 我不希望这些信息过于笼统,比如:“你有一颗钻石” 我设法根据用户拥有的钻石数量以及他是否捡起或丢弃钻石来生成不同的消息: 我也希望有自定义消息,当用户试图拿起一个钻石时,他的钱包已经满了,当他试图下降时,他没有任何钻石下降。例如: “你不能再捡钻石了。你的钱包已经满了。”和“你没有钻石可以扔了。”

我有一个带有两个按钮的页面:

  • 一个向用户的库存中添加1个单位的东西
  • 另一个从用户的库存中移除1个单位。 在这个例子中,有些东西是钻石
每次用户捡起或扔下钻石时,都会有一条消息告诉他总共有多少钻石

我不希望这些信息过于笼统,比如:“你有一颗钻石”

我设法根据用户拥有的钻石数量以及他是否捡起或丢弃钻石来生成不同的消息:

我也希望有自定义消息,当用户试图拿起一个钻石时,他的钱包已经满了,当他试图下降时,他没有任何钻石下降。例如:

“你不能再捡钻石了。你的钱包已经满了。”和“你没有钻石可以扔了。”

这就是我需要帮助的地方

正如您将在下面的代码中看到的,我在函数中有
diamondCount==0
,该函数丢弃钻石以生成消息“you drop your last Diamond.”如果用户尝试从此点丢弃另一颗钻石,则
diamondCount
仍将为0。那么,当用户刚到达0时,以及当他试图从0开始掉落钻石时,我该如何区分呢

这就是我所拥有的:

函数pickdommond(){
if(类型(存储)!=“未定义”){
if(localStorage.diamondCount<10){
localStorage.diamondCount=Number(localStorage.diamondCount)+1;
}否则{
localStorage.diamondCount=10;
}
if(localStorage.diamondCount==1){
document.getElementById(“结果”).innerHTML=“您捡到了第一颗钻石!”;
}否则{
document.getElementById(“结果”).innerHTML=“您捡到一颗钻石。您的钱包中现在总共有“+localStorage.diamondCount+”颗钻石。”;
}
}
}
函数dropDiamond(){
if(类型(存储)!=“未定义”){
如果(localStorage.diamondCount>0){
localStorage.diamondCount=Number(localStorage.diamondCount)-1;
}否则{
localStorage.diamondCount=0;
}
if(localStorage.diamondCount==1){
document.getElementById(“结果”).innerHTML=“您掉了一颗钻石。您的钱包里只剩下一颗钻石。”;
}else if(localStorage.diamondCount==0){
document.getElementById(“结果”).innerHTML=“您丢失了最后一颗钻石。您现在没有任何钻石。”;
}否则{
document.getElementById(“结果”).innerHTML=“您掉了一颗钻石。您的钱包中现在总共有“+localStorage.diamondCount+”颗钻石。”;
}
}
}
函数dropAllDiamonds(){
localStorage.diamondCount=0;
document.getElementById(“结果”).innerHTML=“您掉了所有的钻石。”;
}
使用按钮拾取或放下钻石

捡钻石

掉落钻石

放下所有的钻石


看起来您的问题在于if/else逻辑。具体来说,您应该能够使用单个if/else链完成所有您想要的事情。我对您的代码做了如下更改:

对于pickDiamond,我从您的菱形计数为零开始,随着用户库存的增加,在逻辑序列中添加了新文本。这里只处理数字,增量运算符是合适的。一旦用户的库存达到10,逻辑将默认为“你不能再挑选钻石了。你的钱包已经满了。”最后的else语句。为了测试,我创建了一个localStorage对象

    let localStorage = {
        diamondCount: 0
    }
    function pickDiamond() {
        if (typeof(Storage) !== "undefined") {
            if (localStorage.diamondCount == 0) {
                localStorage.diamondCount++;
                document.getElementById("result").innerHTML = "You picked up your first Diamond!";
            } else if (localStorage.diamondCount < 10) {
                localStorage.diamondCount++;
                document.getElementById("result").innerHTML = "You picked up a Diamond. You now have a total of " + localStorage.diamondCount + " Diamonds in your wallet.";
            } else {
                document.getElementById("result").innerHTML = "You cannot pick any more diamonds. Your wallet is already full.";
            }

            }
        }

非常感谢你的帮助,伙计!这正是我需要的。和迪格斯的接触很好。我对JavaScript很陌生。
让localStorage={diamondCount:0}做什么        function dropDiamond() {
        if (typeof(Storage) !== "undefined") {
            if (localStorage.diamondCount > 2) {
                localStorage.diamondCount--;
                document.getElementById("result").innerHTML = "You dropped a Diamond. You now have a total of " + localStorage.diamondCount + " Diamonds in your wallet.";                 
            } else  if (localStorage.diamondCount == 2) {
                localStorage.diamondCount--;
                document.getElementById("result").innerHTML = "You dropped 1 Diamond. You only have 1 Diamond left in your wallet.";                    
            } else if (localStorage.diamondCount == 1) {
                localStorage.diamondCount--;
                document.getElementById("result").innerHTML = "You dropped your last Diamond. You don't have any Diamonds now.";
            } else {
                document.getElementById("result").innerHTML = "You don't have any Diamonds to drop ya dingus";
            }
        }
    }
        function dropAllDiamonds() {
             localStorage.diamondCount = 0;
             document.getElementById("result").innerHTML = "You dropped all your Diamonds.";
    }