无法使图像闪烁得到预期的错误

时间:2011-12-07 19:46:46

标签: javascript asp.net sharepoint

我正在尝试使图像闪烁,这是我在sharepoint上的Web部分的一部分。

<asp:ImageButton ID="imgbtn1" onclick="imgbtn1_Click" ImageUrl="~/xxxxx.gif" runat="server" onload="Javascript:return blink();" />

function blink() {
    var e = document.getElementById("imgbtn1");
    e.style.visibility = (e.style.visibility == 'visible') ? 'hidden' : 'visible';
    setTimeout("blink();", 500);
}

每当我尝试加载带有图像的页面时,我得到)预期的错误。我的语法有问题吗?请让我知道...

3 个答案:

答案 0 :(得分:1)

使用OnClientClick代替OnClickOnClick用于服务器端:

我认为这应该有效:

<asp:ImageButton ID="imgbtn1" OnClientClick="blink(); return false;" ImageUrl="~/xxxxx.gif" runat="server" />

function blink() {
    var e = document.getElementById("<%=imgbtn1.ClientID%>");
    e.style.visibility = (e.style.visibility == 'visible') ? 'hidden' : 'visible';
    setTimeout("blink();", 500);
}

注意我是如何更改你获得imgBtn引用的部分。您需要使用<%=imgBtn.ClientID%>

修改

显然我误解了你OnClick

的目的

这应该这样做:

<asp:ImageButton ID="imgbtn1" OnClick="imgbtn1_Click" ImageUrl="~/xxxxx.gif" runat="server"/>

window.onload=blink;
function blink() {
    var e = document.getElementById("<%=imgbtn1.ClientID%>");
    e.style.visibility = (e.style.visibility == 'visible') ? 'hidden' : 'visible';
    setTimeout("blink();", 500);
}

如果您认为执行window.onload=blink是一件大事,请在Page_Load上执行此操作:

Page_Load()
{
   imgBtn.Attributes.Add("onload","blink();");
}

答案 1 :(得分:0)

您不能使用OnLoad的{​​{1}}属性来执行JavaScript,因为它用于为控件的<asp:ImageButton />事件设置服务器端事件处理程序。这是一个解决方法:

在服务器端Load处理程序中:

Page_Load

答案 2 :(得分:0)

检查出来

http://msdn.microsoft.com/en-us/library/asz8zsxy.aspx

http://forums.asp.net/t/1038225.aspx/1

http://msdn.microsoft.com/en-us/library/aa479011.aspx

http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientid.aspx

始终使用

    "<%=id.ClientID%>" 

当您在JavaScript中使用getelementbyid时,如果要组合asp和JavaScript,因为asp将在运行时更改id,因此服务器元素ID将不同,并且您期望的客户端ID将不同。