作者iambonnie ( )
看板Web_Design
标题[问题] checkbox效果无法表现於IE
时间Tue Oct 30 14:44:42 2007
目的:改变checkBox勾选状态 即改变颜色的效果
作法:checkBox搭配table使用 每个cell放一个checkBox
预先用一个阵列存选取状态
pre[]
当发生onClick()时呼叫js 并用另一阵列存目前选取状态
checkItem}[]
比较两阵列内容 再做颜色处理
问题:在Firefox可以正常显示 但在IE上却没有效果
我用alert去检查 发现在阵列比对的时候
只能侦测到第一个checkBox勾选状态改变 後面两个都无效
且即使第一个checkBox可以被判断 但後续的颜色处理却没有出现效果
请问我该如何改写 才能让两种浏览器都可以跑出我要的?谢谢
附上我的程式码:(放在<body>底下)
<form name="FormA">
<table name=tb1>
<tr><td
name="cell">
<input type=checkbox name= "books" value="JavaScript"
onclick="show();">
JavaScript</td></tr>
<tr><td
name="cell">
<input type=checkbox name= "books" value="Html" checked="true"
onclick="show();">
Html</td></tr>
<tr><td
name="cell">
<input type=checkbox name= "books" value="XML" checked="true"
onclick="show();">
XML</td></tr>
</table>
</form>
<script type="text/javascript">
<!--
var obj=document.FormA.books;
var len = obj.length;
var pre= new Array();
//boolean array
for(var i=0;i<len;i++){
//储存预设状态
pre[i]=obj[i].checked;
//alert("pre["+i+"] checked is "+pre[i]);
}
function show(){
var checkItem= new Array();
//boolean array
var a= document.getElementsByName('cell');
//checkBox所在栏位集合
for (var i=0;i<len;i++){ /
/目前选项状态
checkItem[i]=obj[i].checked;
//alert("checkItem["+i+"] checked is "+checkItem[i]);
if (pre[i]!=checkItem[i]){
alert(obj[i].value +" is changed.");
//显示哪些选项被改了 可注解掉
a[i].style.backgroundColor="D6F4BA";
//改表格栏位的背景色
}
else{
a[i].style.backgroundColor="#ffffff";
}
}
//end for
}
//end show()
//-->
</script>
--
一个人缺乏什麽,会反映在他对书籍的评价上。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.124.142.183
1F:推 blackbing:请爱用document.getElementById 10/31 09:44
2F:推 blackbing:如果只是要做到这样的效果好像有点绕太远了 10/31 09:50
3F:→ grence:我的IE告诉我没有style属性 囧a 11/01 01:08
4F:推 iambonnie:要跟很多预设值比较 所以用阵列 用id取是指obj那部分吗? 11/01 13:10
5F:→ iambonnie:喔喔 那我再把style改成其它方式 11/01 13:11