HTML的Javascript函数只发生一次

时间:2017-11-08 09:16:28

标签: javascript java html

因此,我在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>

我怎样才能解决&#34;覆盖&#34;消息只发生一次而不是每个条目?

2 个答案:

答案 0 :(得分:1)

你可以有一个变量标志,用于检查你的覆盖信息是否已经添加或不像

var isOverwriteDone = false;

function AlertFunction(messagetype){
if(!isOverwriteDone ){
    isOverwriteDone = true;
    var messagetype = "alert " + messagetype;   
    jQuery('<div/>', { class: messagetype
    }).html('Overwrite button').appendTo("#alertmessage1"); 
}
}

答案 1 :(得分:1)

您可以使用闭包:

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

请记住,您无法控制调用函数的次数。您可以控制的是函数体执行的次数。无论是简单的布尔标志还是更复杂的底层逻辑。