asp.net用户控件调用js,主界面使用时会放置多个用户控件,只有一个的js会起作用。

fuda_1985 fuda_1985 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
用户控件界面代码:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="WebApplication1.WebUserControl1" %>
<div>
<asp:Button ID="Button1" runat="server" BackColor="red" Width="40"
BorderStyle="None" OnClick="UserOnClick" style="height: 17px" />
</div>
<script>
var timename;
function text() {
timename = setInterval("change()", 1000);
}

function change() {
var btnId = "<%=GetBtnId()%>";
var btnColor = document.getElementById(btnId).style.backgroundColor;
if (btnColor == 'blue') {
document.getElementById(btnId).style.backgroundColor = 'red';
}
else {
document.getElementById(btnId).style.backgroundColor = 'blue';
}
}

function textClose() {
clearInterval(timename);
}
</script>

用户控件后台代码:
 protected void Page_Load(object sender, EventArgs e)
{

}

private Color _flickerColor1;
public Color FlickerColor1
{
get { return _flickerColor1; }
set { _flickerColor1 = value; }
}

private Color _flickerColor2;
public Color FlickerColor2
{
get { return _flickerColor2; }
set { _flickerColor2 = value; }
}

public Color BackGroud
{
get { return this.Button1.BackColor; }
set { this.Button1.BackColor = value; }
}

private bool isBroken;

public bool IsBroken
{
get { return isBroken; }
set {

isBroken = value;
if (isBroken)
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>text()</script>");
}
else
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>textClose()</script>");
}
}
}

/// <summary>
/// 返回控件
/// </summary>
/// <returns></returns>
public string GetBtnId()
{
return this.Button1.ClientID.ToString();
}

void timer_Tick(object sender, EventArgs e)
{
if (isBroken)
{
if (Button1.BackColor == Color.Red)
{
Button1.BackColor = Color.Black;
}
else
{
Button1.BackColor = Color.Red;
}
}
}


public event EventHandler Login; //添加事件句柄

protected void UserOnClick(object sender, EventArgs e)
{
if (Login != null)
Login(this, new EventArgs()); //激活Login事件
}


调用界面前台:

<%@ Register src="WebUserControl1.ascx" tagname="WebUserControl1" tagprefix="uc1" %>

<!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 style="margin:4,4,4,4;">

<asp:Button ID="Button1" runat="server" Text="是否停止闪烁" onclick="Button1_Click" />
<uc1:WebUserControl1 ID="WebUserControl13" runat="server" BackGroud="Black" />
<uc1:WebUserControl1 ID="WebUserControl12" runat="server" BackGroud="Black" />
<uc1:WebUserControl1 ID="WebUserControl11" runat="server" BackGroud="Black" />
</div>
</form>

</body>
</html>

调用界面后台:

protected void Page_Load(object sender, EventArgs e)
{

}

protected void OnLoginPress(Object Render, EventArgs e)
{
this.RegisterClientScriptBlock("", "<script>alert(1);</script>");
}

protected void Button1_Click(object sender, EventArgs e)
{
if (!WebUserControl11.IsBroken)
{
WebUserControl11.IsBroken = true;
}
else
{
WebUserControl11.IsBroken = true;
}

if (!WebUserControl12.IsBroken)
{
WebUserControl12.IsBroken = true;
}
else
{
WebUserControl12.IsBroken = true;
}
}

现在的问题是,当只使用一个用户控件,闪烁变色时,是没问题的,多个时会出问题,我想应该是用胡控件中的JS方法名都是一个造成的,就是在用户控件后台注册JS,我就可以控制js的方法名,但是在后台注册的定时器js无效了,想不出来用什么办法来实现自己的功能了。
...全文

相关推荐

评论 15
收藏 已收藏
分享
返回顶部
fuda_1985
.NET社区 62,272 成员 668,968 内容