繁体   English   中英

HTML的JavaScript函数仅发生一次

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM