是否可以在javascript中进行两次.click方法调用

时间:2009-05-12 06:19:26

标签: asp.net javascript ajax updatepanel

我有以下javascript代码:

function ClickButtons() {
   document.getElementById('Button1').click();
   document.getElementById('Button2').click();
}

只有Click2似乎被点击了。如果我颠倒了语句的顺序,那么只有Button1(它会被称为第二个)似乎可以工作。

仅供参考(不要认为这会影响这个问题,这里有更多信息):按钮点击正在进行ajax /部分页面更新(他们调用数据服务并在页面上填充数据)

编辑:解决方案setTimeout有效,但在性能上设置了下限。我做了一点看,两个按钮是asp.net按钮,并在更新面板内。如果我按顺序点击它们它们工作正常,但如果我点击一个然后快速点击第二个(在第一个完成之前),那么第二个将工作,第一个将失败。这似乎是更新面板和asp.net的问题?我可以在前面做些什么来启用上面的javascript并避免使用setTimeout选项吗?

3 个答案:

答案 0 :(得分:1)

它应该工作。单击第一个按钮后,尝试对第二个按钮调用setTimeout。它很难看,但也许它会起作用。

function clickButton() {
 document.getElementById('#button1').click();
 setTimeout(button2, 300);
}

function button2() {
 document.getElementById('#button2').click();
}

答案 1 :(得分:1)

如何使用IE的fireEvent()函数?

function ClickButtons() {
  document.getElementById("Button1").fireEvent("onclick");
  document.getElementById("Button2").fireEvent("onclick");
}

工作示例(在IE6中测试):

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>Click Test</title>
  </head>

  <body>
    <button id="Button1" onclick="alert('Button1 Clicked');">Click 1</button>
    <button id="Button2" onclick="alert('Button2 Clicked');">Click 2/button>
    <script type="text/javascript">
      document.getElementById("Button1").fireEvent("onclick");
      document.getElementById("Button2").fireEvent("onclick");
    </script>
  </body>
</html>

由于您使用click()是我所知道的IE特定的,所以这个答案也是如此。在不同的浏览器中,事件的触发方式不同,但制作包装器并隐藏差异并不是太难。

答案 2 :(得分:0)

他们都应该点击一下点击事件。如果您删除了ajax请求和其他繁重的工作,并在每个事件监听器中放置一个警报或console.log,会发生什么。哦,你是怎么听事件的?

相关问题