【问题标题】:Is there a reason why this function only works once?这个功能只工作一次有什么原因吗?
【发布时间】:2021-11-18 13:21:41
【问题描述】:

我正在使用 JS-Cookie 制作一个简单的点击游戏。当我调用该函数时,它会工作一次,但是我必须刷新该函数才能再次工作。我尝试在它之后添加一个 console.log 来帮助调试它,并且显示了日志,但是 Cookies.set 不起作用。我不知道发生了什么,而且我对这个库不太熟悉,因此不胜感激。

Javascript

(function refreshCookies(i) {
    setTimeout(function () {
        let flame = Cookies.get('flame');
        let gems = Cookies.get('gems');
        let cuid = Cookies.get('CUID');
        let username = Cookies.get('username');
        let value = Cookies.get('value');

        let value_amount = document.getElementById('value-amount');
        let flame_amount = document.getElementById('flame-amount');
        let gem_amount = document.getElementById('gem-amount');
        let board_placing = document.getElementById('board-placing');
        let welcome_username = document.getElementById('welcome-username');
        let username_header = document.getElementById('username-header');
        let title = document.getElementById('title');

        value_amount.innerHTML = "$" + value;
        flame_amount.innerHTML = "<i class=\"fas fa-fire-alt\"></i> " + flame;
        gem_amount.innerHTML = "<i class=\"fas fa-gem\"></i> " + gems;
        welcome_username.innerHTML = "Welcome, " + username + "!";
        username_header.innerHTML = username;
        title.innerHTML = "Shoe Clicker - $" + value;
        if (--i) {
            refreshCookies(i);
        }
    }, 0500);
})(Infinity);
// clicker

function addClick() {
    Cookies.set('value', parseInt(value) + 1);
    console.log('click added!');
}

HTML

<section onclick="addClick();" class="clicker">
    <h2>Press anywhere to get money!<h2>
    <i class="fas fa-dollar-sign"></i>
</section>

【问题讨论】:

  • 控制台出现错误?
  • 顺便说一句,您在 addClick 中使用了 value,但您在不同的函数中声明了它
  • “只工作一次”是什么意思?您的意思是该值仅更改一次(在初始页面加载时)?
  • 控制台没有错误,我的意思是,当我加载页面并单击时,该功能将起作用。但是如果我再次尝试点击,它就不起作用了。

标签: javascript html js-cookie


【解决方案1】:

使用增量来增加每次点击的值。 sn-p 下面有一个简单的演示。

var money = 0
function addClick() {
  money++
  document.getElementById("demo").innerHTML = money
}
<section onclick="addClick();" class="clicker">
  <h2>Press on me to get money $ !</h2>
  <i class="fas fa-dollar-sign"></i>
</section>
<div id="demo"></div>

【讨论】:

  • 我正在使用cookies,这样当您刷新时,您所拥有的金额仍然存在。所以我不能用那个。
  • 是的,你是对的,我只给出了一个演示。现在随着数量的增加,您可以将其保存在您的 cookie 中
  • 哦,好的,谢谢你的帮助!
  • 没问题,乐于助人
【解决方案2】:

你试过添加这样的东西吗?

function addClick() {
    let value = Cookies.get('value');
    Cookies.set('value', parseInt(value) + 1);
    console.log('click added!');
}

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2013-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-21
  • 1970-01-01
  • 2019-10-08
相关资源
最近更新 更多