![](/img/trans.png)
[英]Using 'onclick' in html for a javascript function only working once
[英]Javascript function for HTML that happens only once
因此,我具有Javascript中的此功能,每次使用数据库条目时,该功能就会在HTML网站上发布警报消息。
现在的问题是我只想打印一次,例如使用“覆盖所有条目”按钮,而不是每次都出现消息。
每次数据库条目已被使用时,javascript都有一个与Java文件配合使用的情况(Java文件为每个条目发送“ databaseentryexists”),如下所示:
case 'databaseentryexists': AlertFunction("alert-warning"); break;
然后,函数本身的工作方式如下:
function AlertFunction(messagetype){
var messagetype = "alert " + messagetype;
jQuery('<div/>', { class: messagetype
}).html('Overwrite button').appendTo("#alertmessage1");
}
在HTML中看起来像这样:
<div id="alertmessage1"></div>
如何解决“覆盖”消息仅发生一次,而不是每个条目发生一次?
您可以使用一个变量标志,该标志将检查您的覆盖消息是否已经添加
var isOverwriteDone = false;
function AlertFunction(messagetype){
if(!isOverwriteDone ){
isOverwriteDone = true;
var messagetype = "alert " + messagetype;
jQuery('<div/>', { class: messagetype
}).html('Overwrite button').appendTo("#alertmessage1");
}
}
您可以使用闭包:
const AlertFunction = (() => {
let hasBeenCalled = false;
return (messagetype) => {
if (hasBeenCalled) return;
var messagetype = "alert " + messagetype;
hasBeenCalled = true;
jQuery('<div/>', { class: messagetype }).html('Overwrite button').appendTo("#alertmessage1");
}
})()
以便
AlertFunction("123"); // -> "alert 123"
AlertFunction("456"); // -> undefined
请记住,您无法控制调用函数的次数。 您可以控制的是函数主体执行了多少次。 是简单的布尔标志还是更复杂的基础逻辑。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.