问题描述:在我的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以后,背景为空白,效果不是很理想。
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以后,背景为空白,效果不是很理想。
<script defer >
</script> Page.ClientScript.RegisterStartupScript
1.你可以把alert写在前台,如果写在后台的话,需要调一次服务器,重新加载页面,导致【隔行样式效果短暂丢失】
2.[页面生命周期] 在Page_init()的时候 调用样式
那段js设置table的样式的代码移下来放到那个lable的前面。这样在页面加载完table以后,就执行js设置样式,接着执行lable的加载弹出提示。你看看你的页面加载执行顺序对不对。
lable1.Text="<script>setTableRowCss('tabel1');alert(‘成功');</script>";
如果是这样写css样式显示正常了。只是难道我要每个需要alert的地方都写这个?而且tabel的个数也不一定呢
你可以把后台需要判断的东西,放在隐藏域中,在前台判断啊。。(document.getElementById("<%=hidden.ClientID%>").value)
全部在前台判断,不会出现CSS样式丢失问题!