问题描述:在我的asp.net页面中,有一个table,table的行数非常多,就使用了JS来设置table的隔行样式
function setTableRowCss(tableid) {
    var tabRows = $get(tableid).rows;  //这里是asp.net ajax的语法
    for (i = 0; i < tabRows.length; i++) {
        (i % 2 == 0) ? (tabRows[i].className = "usertablerow2") : (tabRows[i].className = "usertablerow1");
    }
}页面显示正常的! 
问题:但是遇到后台页面需要alert提示信息的时候,隔行样式效果短暂丢失,alert确定以后,样式又恢复。
问题补充:后台弹出JS,使用的是ClientScript.RegisterStartupScript来,BAIDU,GOOGLE以后,说是response.write的原因,我这里没使用response.write。测试使用ClientScript.RegisterClientScriptBlock,这里面alert以后,背景为空白,效果不是很理想。 

解决方案 »

  1.   

    用一个lable输出那段弹出的脚本就行了。lable1.Text="<script>alert(‘成功');</script>";
      

  2.   

    ScriptManager.RegisterStartupScript
    <script   defer   > 
    </script> Page.ClientScript.RegisterStartupScript 
      

  3.   

    使用ScriptManager.RegisterStartupScript的效果是一样的!后面那两句是什么意思?
      

  4.   

    这个效果是一样的,在alert出现的时候,我用js设置table的样式就会丢失。点确定以后又恢复。如果把样式全部写死在td的每行中,alert后效果不变,但是table行太多,而且很多页面都有这样的table
      

  5.   

    【问题:但是遇到后台页面需要alert提示信息的时候,隔行样式效果短暂丢失,alert确定以后,样式又恢复。】解决方法:
    1.你可以把alert写在前台,如果写在后台的话,需要调一次服务器,重新加载页面,导致【隔行样式效果短暂丢失】
    2.[页面生命周期] 在Page_init()的时候 调用样式
      

  6.   

    JS的执行是逐行执行的,出现这个问题应该是因为你弹出对话框的调用代码在改变表格行背景代码的前面,你可以在页面载入完成后查看HTML源码来验证,如果是这个问题,可以通过调整执行顺序来解决
      

  7.   

    嗯,现在试下如果alert写在前台,那就是所有页面都需要这个方法,将方法写入单独的JS中,所有需要的页面引用?
      

  8.   

    解决方法1中,alert写在前台,但是依然需要通过后台某些判断过后,去调用的,依然调了一次服务器,CSS效果同样会丢失! 
      

  9.   

    楼主可以考虑把样式写在后台在load()中刷新调用
      

  10.   


    那段js设置table的样式的代码移下来放到那个lable的前面。这样在页面加载完table以后,就执行js设置样式,接着执行lable的加载弹出提示。你看看你的页面加载执行顺序对不对。
      

  11.   

    执行顺序的这个问题我也考虑过
    lable1.Text="<script>setTableRowCss('tabel1');alert(‘成功');</script>";
    如果是这样写css样式显示正常了。只是难道我要每个需要alert的地方都写这个?而且tabel的个数也不一定呢
      

  12.   


    你可以把后台需要判断的东西,放在隐藏域中,在前台判断啊。。(document.getElementById("<%=hidden.ClientID%>").value)
    全部在前台判断,不会出现CSS样式丢失问题!
      

  13.   

    解决方法,在alert()前,先调用样式设置方法。
      

  14.   

    ClientScript.RegisterClientScriptBlock(this.GetType(), "this", "<script>alert('成功!');</script>");  这句话可以解决