如何启用和禁用 javascript 功能?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/7131925/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-24 00:59:09  来源:igfitidea点击:

How to enable and disable javascript functions?

javascript

提问by Benny

             if(tmpStr == tmp+value)
             {
                i=1;
                action = null;
                action2 = null;
             }
             if(tmpStr1 == tmp+value)
             {
                i=0;
                            action();//not working
                            action2();//not working
             }
             for(i;i<=14; i++)
             {
                 if(tmp!="movie"+i) 
                 {
                    document.getElementById("movie"+i).sndToAS("resume");
                 }
             }

         }
         function action()
         {
            document.getElementById("movie0").sndToAS("pause");
         }
         function action2()
         {
            if(tmp != "movie0")
            {
                document.getElementById("movie0").sndToAS("pause");

            }
         }

回答by Tristan

Do something like this

做这样的事情

function actionFunc(){
    document.getElementById("movie0").sndToAS("pause");
}
function action2Func()
{
    if(tmp != "movie0"){
     document.getElementById("movie0").sndToAS("pause");

    }
}

window.action = actionFunc;
window.action2 = action2Func;

if(tmpStr == tmp+value)
{
    id=1;
    window.action = null;
    window.action2 = null;
}
if(tmpStr1 == tmp+value)
{
    id=0;
    window.action = actionFunc;
    window.action2 = action2Func;
}

Then when you want to call your functions all you have to do is

然后当你想调用你的函数时,你所要做的就是

action();
action2();

but your going to want to check if the are set before calling them

但是您要在调用它们之前检查它们是否已设置

I believe thats what your after

我相信这就是你的追求

or do something like this

或者做这样的事情

function action(){
    if (window.actionEnabled)
    {
       document.getElementById("movie0").sndToAS("pause");
    }
}
function action2()
{
    if (window.action2Enabled)
    {
       if(tmp != "movie0"){
         document.getElementById("movie0").sndToAS("pause");
       }
    }
}

window.actionEnabled = true;
window.action2Enabled = true;

if(tmpStr == tmp+value)
{
    id=1;
    window.actionEnabled = false;
    window.action2Enabled = false;
}
if(tmpStr1 == tmp+value)
{
    id=0;
    window.actionEnabled = true;
    window.action2Enabled = true;
}

then you don't have to check if the are enabled just call them and they will work or want depending on if they are enabled

那么您不必检查它们是否已启用只需调用它们,它们将工作或需要取决于它们是否已启用

回答by Alex Curtis

If you don't want a function to execute when in a particular state, I would wrap your function do a state check and then a return if in an inappropriate state.

如果您不希望函数在特定状态下执行,我会将您的函数包装起来进行状态检查,然后在处于不适当状态时返回。

function action(obj){
   if(obj.state == <a state you dont want to execute>)
     return;

   action();
} 

function action(){
   document.getElementById("movie0").sndToAS("pause");
}