Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当变量达到某个数值时,有没有办法激活函数?_Javascript_Html - Fatal编程技术网

Javascript 当变量达到某个数值时,有没有办法激活函数?

Javascript 当变量达到某个数值时,有没有办法激活函数?,javascript,html,Javascript,Html,因此,我们的想法是,当用户获得150个“cookies”时,当cookiecount达到150时,将perfectcookie.png更改为brokencookie.png。我是javascript新手,所以可能会有多个错误 var-cookiecount=0; 函数add(){ cookiecount+=值; document.getElementById('text').innerHTML=cookiecount; } document.title=cookiecount+“Cookies

因此,我们的想法是,当用户获得150个“cookies”时,当cookiecount达到150时,将perfectcookie.png更改为brokencookie.png。我是javascript新手,所以可能会有多个错误

var-cookiecount=0;
函数add(){
cookiecount+=值;
document.getElementById('text').innerHTML=cookiecount;
}
document.title=cookiecount+“Cookies”
功能升级(){
如果(cookiecount>=50){
数值+=1;
cookiecount-=50;
}
否则{
警告(“没有足够的cookies!”);
}
}
功能胜利(){
如果(cookiecount>=150){
document.getElementById(cookie.innerHTML=“brokencookie.png”;
}
}



您得到了:



简单解决方案:

function add() {
    cookiecount += value

     if(cookiecount === 150)
       document.getElementById("cookie").src = "brokencookie.png";

    document.getElementById('text').innerHTML = cookiecount;
}
当你增加一个cookie计数器时,你会检查它是否是150。如果是,则替换图像的src属性

不要忘记所有HTML属性都应该用引号括起来(不是onClick=add(),而是onClick=“add()”)

最佳解决方案是创建一个单独的函数,该函数将决定当cookiecount达到某个极限时应该发生什么。这是一个很好的实践,因为它使您的代码更加灵活和可扩展。大概是这样的:

function cookieActions(count) {
    if(count >= 150 && count < 300)
       document.getElementById("cookie").src = "brokencookie.png";

    else if(count >= 300)
       document.getElementById("cookie").src = "flyingcookie.png";

    // As many else if block as you need!
}

// It's better to pass value in function as an argument, because
// it simplifies things a lot when you want value to change on different events.

function add(value) {
    cookiecount += value;

    // Call the control function here.
    cookieActions(cookiecount);

    document.getElementById('text').innerHTML = cookiecount;
}
函数cookieActions(计数){
如果(计数>=150&&count<300)
document.getElementById(“cookie”).src=“brokencookie.png”;
否则如果(计数>=300)
document.getElementById(“cookie”).src=“flyingcookie.png”;
//如果你需要的话,还可以选择更多!
}
//最好将函数中的值作为参数传递,因为
//当您希望在不同的事件中改变价值时,它可以简化很多事情。
功能添加(值){
cookiecount+=值;
//在这里调用控制函数。
cookieActions(cookiecount);
document.getElementById('text').innerHTML=cookiecount;
}

有几种方法。其中最简单的是在add()函数中调用victory()函数:

function add() {
    cookiecount += value
    document.getElementById('text').innerHTML = cookiecount;
    if(cookiecount >= 150){
        victory();
    }
}
function victory() {
    document.getElementById(cookie).innerHTML = "brokencookie.png";
}
如果你想要更复杂一点的东西,你可以看看并调整它以适应你的需要

使用这两种解决方案中的任何一种,都不需要在victory()函数中进行任何检查:

function add() {
    cookiecount += value
    document.getElementById('text').innerHTML = cookiecount;
    if(cookiecount >= 150){
        victory();
    }
}
function victory() {
    document.getElementById(cookie).innerHTML = "brokencookie.png";
}
顺便说一句,victory()函数不起作用。换成

function victory() {
    document.getElementById("cookie").setAttribute("src", "brokencookie.png");
}

我不知道这是否是此功能的完整代码,但如果是:

  • 您没有声明cookiecount或值变量,也没有指定值。当我尝试你的代码时,我必须分配一些值才能让它工作
  • 如果要在一个事件上调用多个函数,应使用分号将它们分开,如下所示:

    function cookieActions(count) {
        if(count >= 150 && count < 300)
           document.getElementById("cookie").src = "brokencookie.png";
    
        else if(count >= 300)
           document.getElementById("cookie").src = "flyingcookie.png";
    
        // As many else if block as you need!
    }
    
    // It's better to pass value in function as an argument, because
    // it simplifies things a lot when you want value to change on different events.
    
    function add(value) {
        cookiecount += value;
    
        // Call the control function here.
        cookieActions(cookiecount);
    
        document.getElementById('text').innerHTML = cookiecount;
    }
    
    onclick=“添加();胜利()

  • 在函数victory()中,当您按id获取元素时,忘记添加引号。应该是这样的:

    function cookieActions(count) {
        if(count >= 150 && count < 300)
           document.getElementById("cookie").src = "brokencookie.png";
    
        else if(count >= 300)
           document.getElementById("cookie").src = "flyingcookie.png";
    
        // As many else if block as you need!
    }
    
    // It's better to pass value in function as an argument, because
    // it simplifies things a lot when you want value to change on different events.
    
    function add(value) {
        cookiecount += value;
    
        // Call the control function here.
        cookieActions(cookiecount);
    
        document.getElementById('text').innerHTML = cookiecount;
    }
    
    document.getElementById('cookie').innerHTML=“brokencookie.png”


我希望我能理解你在这里想做什么,并能以某种方式提供帮助。

是的,有办法。您将需要两个相互独立的不同功能。其中一个函数将处理cookie计数逻辑以及与之相关的其他内容。另一个功能将处理图像交换。然后在处理cookie逻辑的函数中,对计数进行if条件检查,如果满足条件,则启动image change函数
if(cookiecount>=15){otherFunction();}
您可以为此使用JavaScript代理,特别是getter陷阱。它将在值发生变化时监视值,并在值发生变化时触发您的操作