JS 函数在页面重新加载时激活警报

JS function activates alert on page reload

本文关键字:加载 激活 函数 新加载 JS      更新时间:2023-09-26

所以我正在为我正在开发的网页开发这个商店系统

但是在我将其添加到 JS 之后

function s1u1f() {
  if (S1U1 === false && script1B === true && Points >= 100) {
        Points = Points - 100;
        clearInterval(script1);
        s1ut.innerHTML = "UPGRADE2";
        ids1.innerHTML = "this will speed <br /> up script1 <br /> to 0,500s";
        s1p.innerHTML = "Price: 125P";
        script1 = setInterval(function() {click(1);}, 750);
        S1U1B.removeEventListener("click", s1u1f());
    }else if (100 > Points) {
        alert("you dont have enough points to buy this item");
    }else if (script1B === false) {
        alert("You need to buy script1 first");
    }
}

它会自动激活else if(100 > Points)内的警报

如果你想看看我的意思,请转到此链接http://clickthebutton.esy.es/clickthebutton%20layout%20demo/cssTest.html

这一行(上面未显示)是问题所在:

S1U1B.addEventListener("click", s1u1f());

这会立即调用 s1u1f() 函数。启动时有0点,所以100 > Points,你会看到alert()

你想传递函数,而不是调用它:

S1U1B.addEventListener("click", s1u1f);

您还需要更改:

S1U1B.removeEventListener("click", s1u1f());

S1U1B.removeEventListener("click", s1u1f);

出于同样的原因。

问题在于您创建点击处理程序的方式:

S1U1B.addEventListener("click", s1u1f());

您需要传入函数引用,而是立即调用该函数。 删除函数上的括号:

S1U1B.addEventListener("click", s1u1f);