HTML / Javascript:多个onClick函数触发命令/延迟?

时间:2013-05-08 06:32:02

标签: javascript html onclick

一个基本的理解问题:

有一个带onClick操作的元素 - 正在进行多个javascript调用:

onclick="function1();function2();function3()"

但是,由于函数3依赖于function1动作,我需要确保function3没有触发,直到function1全部完成。这似乎不是事物的自然顺序,在实践中似乎所有3个函数都在同时或多或少地发射(至少不等待彼此完成)。无论如何我能做到这一点吗?

编辑:不能从同一个函数调用中完成所有操作,它(大多数情况下)是更新某些div的ajax调用...

进一步编辑:好的,可以看出它可能需要进一步澄清(认为有一种简单,合理的方式来处理它,可以这么说)...

函数调用正在触发ajax动作,它通过PHP - 更新页面上的内容(div)。如果我应该使用返回值,那么我应该修改我的中央ajax js函数,以便它将在完成时返回一些东西,并且只有在设置了这个值时才触发下一个函数?任何人都有一个很好的片段在一个单一的onClick事件中执行此操作..? : - )

或者......作为一个黑客攻击的东西 - 我应该在function3前面延迟1秒钟吗? :-)我如何直接在onClick事件中进行...? : - )

3 个答案:

答案 0 :(得分:1)

您可以使用回调:

function function1(callback) {
    // do your stuff
    if (callback) { callback(); } // calls your next function
}
function function2(callback) {
    // do your stuff
    if (callback) { callback(); } // calls your next function
}
function function3() {
    // function 3 stuff
}

如果您依靠setTimeout完成,只需将您的通话添加到setTimeout部分的回调中。

并将其称为:

<a onclick="function1(function() { function2( function() { function3() }) });">call functions</a>

答案 1 :(得分:0)

而不是直接调用所有函数onClick你应该尝试从另一个函数调用一个函数

类似的东西:

onClick="function1()"

然后从funtion1()调用funtion2()

function function1()
{
//your code here

funtion2();

}

依旧......

答案 2 :(得分:-1)

如果您不想更改onclick定义,那么您可以这样做:

onclick="function1();function2();function3();"

脚本:

function1Complete = false;

function1(){
// some stuff
function1Complete = true;
}

function3(){
  if (function1Complete){
    // Put your code here
  }else{
    setTimeout(function3, 1000);
  }
}

这不是最好的清洁解决方案。但如果您没有任何其他解决方案,这将对您有所帮助。