下面是一个示例页面,,我要求的功能是,当用户点击checkbox后,该checkbox所在行的背景颜色改变,取消选择后,背景变回白色。这一部分功能下面的代码已经实现,如下所示:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head><body>
<form id="form1" name="form1" method="post" action="test.htm">
<table width="500" border="0" cellspacing="0" cellpadding="0">
<tr id="tr1" class=saveHistory>
<td ><input type="checkbox" name="checkbox" value="checkbox" onclick="changebg()" /></td>
<td> </td>
</tr>
<tr>
<td><input name="checkbox" type="checkbox" value="checkbox" onclick="changebg()"/></td>
<td> </td>
</tr>
<tr>
<td><input type="checkbox" name="checkbox" value="checkbox" onclick="changebg()"/></td>
<td> </td>
</tr>
<tr>
<td><input type="checkbox" name="checkbox" value="checkbox" /></td>
<td><input type="submit" name="Submit" value="提交" /></td>
</tr>
</table>
</form>
</body>
</html><script>
function changebg(){
if(event.srcElement.tagName=="INPUT" && event.srcElement.checked==true){
event.srcElement.parentElement.parentElement.style.background="#336699"; }else{
event.srcElement.parentElement.parentElement.style.background="#ffffff";
}
}
</script>现在的问题是:当我选中一个checkbox,提交到另外一个页面时,再返回这个页面,checkbox的选中状态是正确的,但是tr的背景颜色不再是提交前的值..为了解决这个问题,我加了如下代码:
代码段2:
<script>
for(var i=0;i<form1.length;i++){
if((form1.elements[i].name=="checkbox") && form1.elements[i].checked==true){
form1.elements[i].style.background="#336699";
}
}
</script>上面这一小段代码(代码段2),不管是第一次打开页面、刷新还是从其他页面后退过来,都应该会执行
不知道是什么原因,明明返回后有些checkbox的状态是被选中的,但是在javascript中获取的checked值总是false,也就不会执行改变颜色的语句。我用google查找了一下相关资料,有人说,当用后退返回前一页时,IE是先执行页面上的代码,这个时候页面上控件的值都是默认的,当页面代码执行完毕后,再从缓存中取出值付给相应的控件,所以我最后这一段代码 的if判断 中form1.elements[i].checked==true 总是false,是这样吗?
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head><body>
<form id="form1" name="form1" method="post" action="test.htm">
<table width="500" border="0" cellspacing="0" cellpadding="0">
<tr id="tr1" class=saveHistory>
<td ><input type="checkbox" name="checkbox" value="checkbox" onclick="changebg()" /></td>
<td> </td>
</tr>
<tr>
<td><input name="checkbox" type="checkbox" value="checkbox" onclick="changebg()"/></td>
<td> </td>
</tr>
<tr>
<td><input type="checkbox" name="checkbox" value="checkbox" onclick="changebg()"/></td>
<td> </td>
</tr>
<tr>
<td><input type="checkbox" name="checkbox" value="checkbox" /></td>
<td><input type="submit" name="Submit" value="提交" /></td>
</tr>
</table>
</form>
</body>
</html><script>
function changebg(){
if(event.srcElement.tagName=="INPUT" && event.srcElement.checked==true){
event.srcElement.parentElement.parentElement.style.background="#336699"; }else{
event.srcElement.parentElement.parentElement.style.background="#ffffff";
}
}
</script>现在的问题是:当我选中一个checkbox,提交到另外一个页面时,再返回这个页面,checkbox的选中状态是正确的,但是tr的背景颜色不再是提交前的值..为了解决这个问题,我加了如下代码:
代码段2:
<script>
for(var i=0;i<form1.length;i++){
if((form1.elements[i].name=="checkbox") && form1.elements[i].checked==true){
form1.elements[i].style.background="#336699";
}
}
</script>上面这一小段代码(代码段2),不管是第一次打开页面、刷新还是从其他页面后退过来,都应该会执行
不知道是什么原因,明明返回后有些checkbox的状态是被选中的,但是在javascript中获取的checked值总是false,也就不会执行改变颜色的语句。我用google查找了一下相关资料,有人说,当用后退返回前一页时,IE是先执行页面上的代码,这个时候页面上控件的值都是默认的,当页面代码执行完毕后,再从缓存中取出值付给相应的控件,所以我最后这一段代码 的if判断 中form1.elements[i].checked==true 总是false,是这样吗?
解决方案 »
- 在html文件中需要调用2段jquery的代码,但是不能同时运行?
- 谁给我讲讲怎么用getbytes方法进行编码转换?
- 各位大神 帮忙看看为什么ajax里边的readyState对象 始终返回1啊
- 这段代码有什么问题呢,为什么不通过?
- 网站估价
- confirm的问题,谁能解决,100分相送!
- jsp操作Access数据库的问题(望赐教,解答后立即结帖)
- 请问一下,如何配置Orcale与Websphere服务器的具体步骤!
- 如何将apache 2。0与tomcat 5。0整合?
- 也许是个异想天开的问题……
- 怎样才能让http://localhost:8080/MyWeb/index.jsp不再出现:8080就可以访问了
- JSP跟ASP.NET的差别,来者有分
代码段2:
for(var i=0;i<form1.length;i++){
if((form1.elements[i].name=="checkbox") && form1.elements[i].checked==true){
form1.elements[i].parentElement.parentElement.style.background="#336699";
}else{
form1.elements[i].parentElement.parentElement.style.background="#FFFFFF";
}
}
window.onload=function()
{
for(var i=0;i<form1.length;i++){
if((form1.elements[i].name=="checkbox") && form1.elements[i].checked==true){
form1.elements[i].parentElement.parentElement.style.background="#336699";
}else{
form1.elements[i].parentElement.parentElement.style.background="#FFFFFF";
}
}
}