100分求教一个诡异的js触发后台事件代码

cyly100 2012-04-01 12:54:49

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="1.aspx.cs" Inherits="CRM.Web._" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="uppanel" runat="server">
<ContentTemplate>
<asp:TextBox ID="Txt_1" runat="server"></asp:TextBox>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Btn_1" EventName="click" />
<asp:AsyncPostBackTrigger ControlID="Btn_2" EventName="click" />
<asp:AsyncPostBackTrigger ControlID="Btn_3" EventName="click" />
</Triggers>
</asp:UpdatePanel>
<asp:UpdatePanel ID="uppanel1" runat="server">
<ContentTemplate>
<asp:Button ID="Btn_1" runat="server" onclick="Btn_1_Click" />
<asp:Button ID="Btn_2" runat="server" onclick="Btn_2_Click" />
<asp:Button ID="Btn_3" runat="server" onclick="Btn_3_Click" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
<script type="text/javascript">
document.getElementById("Btn_1").click();
document.getElementById("Btn_2").click();
document.getElementById("Btn_3").click();
</script>




using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

namespace CRM.Web
{
public partial class _ : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}

protected void Btn_1_Click(object sender, EventArgs e)
{
Txt_1.Text = "1";
}

protected void Btn_2_Click(object sender, EventArgs e)
{
Txt_1.Text += "2";
}

protected void Btn_3_Click(object sender, EventArgs e)
{
Txt_1.Text += "3";
}
}
}




执行代码后,按常理来说js将按顺序执行按钮事件。 Btn_1_Click -》Btn_2_Click -》Btn_3_Click

可是现在它只执行 Btn_3_Click

我就郁闷了。
...全文
265 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyly100 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
因为你执行第一个的时候就回发刷新了,刷新之后执行第二个,同样刷新之后第三个,所以你看到的只有第三个执行了
[/Quote]

确实就像你所说的一样

刷新 刷新 刷新 刷新 执行按钮3

我换了别的方法实现了,谢谢了
FireHell 2012-04-01
  • 打赏
  • 举报
回复
4楼的正解。
gudujianxiao 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

引用 9 楼 的回复:

因为你的点击事件写在后台,每次执行完成之后都得重新加载那个页面,所以前面两次你看不到效果,你可以试试把
protected void Btn_3_Click(object sender, EventArgs e)
{
Txt_1.Text += "3";
}
改为
protected void Btn_3_Click(object sender, Ev……
[/Quote]
错,楼主已经使用异步功能了吗?点击事件,整个页面不会重新加载。
风一样的大叔 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

因为你的点击事件写在后台,每次执行完成之后都得重新加载那个页面,所以前面两次你看不到效果,你可以试试把
protected void Btn_3_Click(object sender, EventArgs e)
{
Txt_1.Text += "3";
}
改为
protected void Btn_3_Click(object sender, EventArgs e)
……
[/Quote]很清楚
gudujianxiao 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

程序执行的快,看不到前面的,一下子就到了最后了。
[/Quote]
就像这位说的那样。执行速度快造成1,2值还没有赋值,就直接奔Btn3了。
gudujianxiao 2012-04-01
  • 打赏
  • 举报
回复
<script type="text/javascript">
document.getElementById("Btn_1").click();

alert(document.getElementById("Txt_1").value);

document.getElementById("Btn_2").click();

alert(document.getElementById("Txt_1").value);

document.getElementById("Btn_3").click();

alert(document.getElementById("Txt_1").value);
</script>
把这个覆盖你的脚本, 可以得到你想要的值。
happytonice 2012-04-01
  • 打赏
  • 举报
回复
程序执行的快,看不到前面的,一下子就到了最后了。

  • 打赏
  • 举报
回复
可以试一下这样,在第一个按钮里面调用其他按钮的点击事件
protected void Btn_1_Click(object sender, EventArgs e)
{
Txt_1.Text = "1";
Btn_2_Click(this ,new EventArgs ());
}

protected void Btn_2_Click(object sender, EventArgs e)
{
Txt_1.Text += "2";
Btn_3_Click(this, new EventArgs());
}

protected void Btn_3_Click(object sender, EventArgs e)
{
Txt_1.Text += "3";
}
}
zi_se_lu_ren 2012-04-01
  • 打赏
  • 举报
回复
因为你的点击事件写在后台,每次执行完成之后都得重新加载那个页面,所以前面两次你看不到效果,你可以试试把
protected void Btn_3_Click(object sender, EventArgs e)
{
Txt_1.Text += "3";
}
改为
protected void Btn_3_Click(object sender, EventArgs e)
{
Response.Write("<script type='text/javascript'>alert('3')</script");
}
试试
这个肯定能执行的
苹果哥 2012-04-01
  • 打赏
  • 举报
回复
执行一次click alert(Txt.text) 的值

你就清楚了
_萧萧 2012-04-01
  • 打赏
  • 举报
回复
直接覆盖了啊 你写的是一个函数 又不是分开写的
Mirror然 2012-04-01
  • 打赏
  • 举报
回复
刚JS调试了下 1 2 3 其实都执行了 只是最后的结果变成了3
执行顺序 直接覆盖了 你前面的值
  • 打赏
  • 举报
回复


换个角度想,按钮事件就是一个函数,你可以在第一个按钮里面调另外两个函数,
如果你想触发另外两个的话可以把另外两个写到第一个按钮的里面
  • 打赏
  • 举报
回复
因为你执行第一个的时候就回发刷新了,刷新之后执行第二个,同样刷新之后第三个,所以你看到的只有第三个执行了
cyly100 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
程序执行的太快了你看不到而已,你试试把3个值赋值给不同的文本框就知道了
[/Quote]

就算执行太快,那么最终结果,应该是123,而不是3
cyly100 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
程序执行的太快了你看不到而已,你试试把3个值赋值给不同的文本框就知道了
[/Quote]

我切了断点,确实是没有执行。
细嗅蔷薇 2012-04-01
  • 打赏
  • 举报
回复
程序执行的太快了你看不到而已,你试试把3个值赋值给不同的文本框就知道了

62,267

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧