Update panel spoils my javascript

davearia

Centurion
Joined
Jan 4, 2005
Messages
184
Hi I had this page:

Visual Basic:
<%@ Page Language="VB" AutoEventWireup="true" CodeFile="FadeTester.aspx.vb" Inherits="_Default"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Fade Tester</title>
    <script language="javascript" type="text/javascript">
        <!--   
            //Hide image when page loads.         
            function hideImage()
            {
                var object = document.getElementById('imgInfo').style; 
                object.opacity = 0; 
                object.MozOpacity = 0; 
                object.KhtmlOpacity = 0; 
                object.filter = "alpha(opacity=0)"; 
            }
            
            function fadeImageIn(id, millisec) 
            {                                       
                //If an element is invisible, make it visible, else make it invisible                              
                opacity('imgInfo', 0, 100, 1000); 
                setTimeout('fadeImageOut()', 3000)                                       
            }     
            
            function fadeImageOut()
            {
                opacity('imgInfo', 100, 0, 1000); 
            }                         
            
            function opacity(id, opacStart, opacEnd, millisec) 
            { 
                //Speed for each frame 
                var speed = Math.round(millisec / 100); 
                var timer = 0; 

                //Determine the direction for the blending, if start and end are the same nothing happens 
                if(opacStart > opacEnd) 
                { 
                    for(i = opacStart; i >= opacEnd; i--) 
                    { 
                        setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed)); 
                        timer++; 
                    } 
                } 
                else if(opacStart < opacEnd) 
                { 
                    for(i = opacStart; i <= opacEnd; i++) 
                    { 
                        setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed)); 
                        timer++; 
                    } 
                } 
            } 
            
            //Change the opacity for different browsers 
            function changeOpac(opacity, id) 
            { 
                var object = document.getElementById(id).style; 
                object.opacity = (opacity / 100); 
                object.MozOpacity = (opacity / 100); 
                object.KhtmlOpacity = (opacity / 100); 
                object.filter = "alpha(opacity=" + opacity + ")"; 
            } 
        //-->        
    </script>
</head>
<body onload="hideImage()">
    <form id="frmFade" runat="server">                      
        <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
        <table>
            <tr style="padding-left:400px">
                <td valign="middle">
                    <asp:Button ID="btnFade" runat="server" Text="Fade"/>                                       
                    <img runat="server" id="imgInfo" src="Images/updateSuccessful.jpg" alt=""/>
                </td>
            </tr>
        </table>                                                                               
    </form>
</body>
</html>

With this code behind event like this:
Visual Basic:
Protected Sub btnFade_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnFade.Click
        'Set focus to the textbox related to this user error.
        Dim sbJavascript As New StringBuilder()
        sbJavascript.Append("<script language=""JavaScript"" type=""text/javascript"">")       
        sbJavascript.Append("fadeImageIn();")    
        sbJavascript.Append("// -->")
        sbJavascript.Append("</script>")
        ClientScript.RegisterStartupScript(Me.GetType(), "Fade", sbJavascript.ToString())
    End Sub

This works fine, the image fades in out and nice and smooth.

However, if I do this:

Visual Basic:
<%@ Page Language="VB" AutoEventWireup="true" CodeFile="FadeTester.aspx.vb" Inherits="_Default"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Fade Tester</title>
    <script language="javascript" type="text/javascript">
        <!--   
            //Hide image when page loads.         
            function hideImage()
            {
                var object = document.getElementById('imgInfo').style; 
                object.opacity = 0; 
                object.MozOpacity = 0; 
                object.KhtmlOpacity = 0; 
                object.filter = "alpha(opacity=0)"; 
            }
            
            function fadeImageIn(id, millisec) 
            {                                       
                //If an element is invisible, make it visible, else make it invisible                              
                opacity('imgInfo', 0, 100, 1000); 
                setTimeout('fadeImageOut()', 3000)                                       
            }     
            
            function fadeImageOut()
            {
                opacity('imgInfo', 100, 0, 1000); 
            }                         
            
            function opacity(id, opacStart, opacEnd, millisec) 
            { 
                //Speed for each frame 
                var speed = Math.round(millisec / 100); 
                var timer = 0; 

                //Determine the direction for the blending, if start and end are the same nothing happens 
                if(opacStart > opacEnd) 
                { 
                    for(i = opacStart; i >= opacEnd; i--) 
                    { 
                        setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed)); 
                        timer++; 
                    } 
                } 
                else if(opacStart < opacEnd) 
                { 
                    for(i = opacStart; i <= opacEnd; i++) 
                    { 
                        setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed)); 
                        timer++; 
                    } 
                } 
            } 
            
            //Change the opacity for different browsers 
            function changeOpac(opacity, id) 
            { 
                var object = document.getElementById(id).style; 
                object.opacity = (opacity / 100); 
                object.MozOpacity = (opacity / 100); 
                object.KhtmlOpacity = (opacity / 100); 
                object.filter = "alpha(opacity=" + opacity + ")"; 
            } 
        //-->        
    </script>
</head>
<body onload="hideImage()">
    <form id="frmFade" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"/>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:Literal runat="server" ID="litInfo"></asp:Literal>               
                <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
                <table>
                    <tr style="padding-left:400px">
                        <td valign="middle">
                            <asp:Button ID="btnFade" runat="server" Text="Fade"/>                                             
                            <img runat="server" id="imgInfo" src="Images/updateSuccessful.jpg" alt=""/>
                        </td>
                    </tr>
                </table>  
            </ContentTemplate>
        </asp:UpdatePanel>                                                                     
    </form>
</body>
</html>

With a code behind event like so:
Visual Basic:
Protected Sub btnFade_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnFade.Click      
        ScriptManager1.RegisterStartupScript(Me.Page, Me.GetType(), "click", "fadeImageIn();", True)
    End Sub

This effect is different. Instead of the image fading in, it flashes on the screen with no opacity, disappears and then fades in and out which spoils the whole effect.

Can anyone help me out here.

Thanks, Dave.
 
I wrote another little bit of javascript and called this at the start of the fadeImageIn [/CODE]function:

Visual Basic:
 function hideImage()
 {
     var object = document.getElementById('imgInfo').style; 
     object.opacity = 0; 
     object.MozOpacity = 0; 
     object.KhtmlOpacity = 0; 
     object.filter = "alpha(opacity=0)"; 
 }

Works a treat!!!
 
Back
Top