我有以下javascript代码:
function ClickButtons() {
document.getElementById('Button1').click();
document.getElementById('Button2').click();
}
只有Click2似乎被点击了。如果我颠倒了语句的顺序,那么只有Button1(它会被称为第二个)似乎可以工作。
仅供参考(不要认为这会影响这个问题,这里有更多信息):按钮点击正在进行ajax /部分页面更新(他们调用数据服务并在页面上填充数据)
编辑:解决方案setTimeout有效,但在性能上设置了下限。我做了一点看,两个按钮是asp.net按钮,并在更新面板内。如果我按顺序点击它们它们工作正常,但如果我点击一个然后快速点击第二个(在第一个完成之前),那么第二个将工作,第一个将失败。这似乎是更新面板和asp.net的问题?我可以在前面做些什么来启用上面的javascript并避免使用setTimeout选项吗?
答案 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,会发生什么。哦,你是怎么听事件的?