Javascript 当变量达到某个数值时,有没有办法激活函数?
因此,我们的想法是,当用户获得150个“cookies”时,当cookiecount达到150时,将perfectcookie.png更改为brokencookie.png。我是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
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或值变量,也没有指定值。当我尝试你的代码时,我必须分配一些值才能让它工作
- 如果要在一个事件上调用多个函数,应使用分号将它们分开,如下所示:
onclick=“添加();胜利()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; }
- 在函数victory()中,当您按id获取元素时,忘记添加引号。应该是这样的:
document.getElementById('cookie').innerHTML=“brokencookie.png”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; }
我希望我能理解你在这里想做什么,并能以某种方式提供帮助。是的,有办法。您将需要两个相互独立的不同功能。其中一个函数将处理cookie计数逻辑以及与之相关的其他内容。另一个功能将处理图像交换。然后在处理cookie逻辑的函数中,对计数进行if条件检查,如果满足条件,则启动image change函数
if(cookiecount>=15){otherFunction();}
您可以为此使用JavaScript代理,特别是getter陷阱。它将在值发生变化时监视值,并在值发生变化时触发您的操作