如何更改它们的调用顺序?

时间:2011-07-01 13:28:23

标签: javascript html

我有一个非常不方便的问题。

说我有以下功能

function name(namearg){
...
..
}

function handlefailed(){
..
..
}
function handlecover(){
..
..
}

现在我的问题,我有很多硬编码的html,无法更改,调用这两个函数

<a href="javascript:handlecover();javascript:name('MSS')">Link</a>
<a href="javascript:handlefailed();javascript:name('GPS')">Link</a>
<a href="javascript:handlefailed();javascript:name('NPS')">Link</a>

问题是我调用函数的顺序,我首先要查看调用的函数,handlefailed()或handlecover(),然后想知道发送给名称的名称功能

如果我以相反的方式调用函数,我就会完成

var theName;

function name(namearg){
  theName = namearg
}

function handlefailed(){
callOtherfunctionInAnotherJavascript(getElements(theName + ".failed"));
}
function handlecover(){
callOtherfunctionInAnotherJavascript(getElements(theName + ".cover"));
}

但是现在这是不可能的,因为我在第一个函数之后调用了name函数。 有没有一种方法在javascript中“改变”函数的评估顺序,或者你们有一个聪明的解决我的问题,我得到namearg变量的值,并在handlefailed()&amp; handlecover()函数?

3 个答案:

答案 0 :(得分:0)

你可以清空这两个功能:

function handlefailed(){
..
..
}
function handlecover(){
..
..
}

并创建两个满足您需求的新功能

function handlefailed2(){
    ..
    ..
    }
    function handlecover2(){
    ..
    ..
    }

然后根据namearg deside对你要调用的函数调用函数名称(namearg)内的新函数

答案 1 :(得分:0)

var postFix;
function name(namearg){
    callOtherfunctionInAnotherJavascript(getElements(namearg + postFix));    
}
function handlefailed(){ postFix = '.failed'; }      
function handlecover(){ postFix = '.cover'; }

答案 2 :(得分:0)

您可以声明另一个全局handleFunc,并handlefailed / handlecover分配哪个名称。

var theName;
var handleFunc = null;

function name(namearg)
{
    if(handleFunc instanceof Function)
    {
        handleFunc(namearg);
        handleFunc = null;
    }

    theName = namearg
}

function handlefailedCallback(namearg){ /* some code */}
function handlefailed()
{
    handleFunc = handlefailedCallback;
}

function handlecoverCallback(namearg){ /* some code */}
function handlecover()
{
    handleFunc = handlecoverCallback;
}

这使您可以灵活地继续使用name而不会破坏代码的其他区域。