这两天来一直在写dom,郁闷与ie的不符合标准,火狐和ie的处理dom的不兼容。下面是一个兼容的例子,我可花费了很长时间。贴出来以备后用。
ie和非ie 在解析dom 上有些区别,如何做到页面能在ie和非ie浏览器中都正常显示,就需要某种浏览器嗅探(sniffing)机制,使得在解析dom时能执行正确的方法。幸运的时,不用检查大量的不同的浏览器,假设只使用现代浏览器,脚本只需要在ie和其他浏览器之间做区分就行了。
ie能识别出名为uniqueID的document对象的专用属性,名为uniqueID,ie是唯一能够识别这个属性的浏览器,所以uniqueID很适合用来确定脚本是不是在Ie中运行。使用document.uniqueID。
<%@ page language="java" pageEncoding="UTF-8"%><%@ taglib uri="/webwork" prefix="ww"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head>
<title>Test data display</title>
<meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <style type="text/css"><!--.id { font-family: "宋体"; color: #000000; background-color: #E9F8CF; text-align: center;}.lottey { color: #e10000; background-color: #E9F8CF; background-position: center; text-align: center; font-weight:bold}.c1 { color: #B9B9BD; background-color: #E9F8CF; text-align: center;}.c2 { color: #B9B9BD; background-color: #d0e6f7; text-align: center;}.c_red { color: #FFFFFF; background-color: #FF0000; text-align: center;}.c_blue { color: #FFFFFF; background-color: #0000CC; text-align: center;}--></style>
<SCRIPT type="text/javascript"> function init(){ var arr;// <tr>对象数组 var num="";//期数的开奖号码 var numArr = new Array(); arr = document.getElementById("data").childNodes;//子节点数组
for(var i=0; i<arr.length;i++){
if (arr[i].nodeType==3){//文本节点 //alert("text"); continue; } var period=""; if (document.uniqueID){ //alert("execute ie"); period = arr[i].childNodes[1].getAttribute("id");// 期数值 }else{ //alert("execute w3c"); period = arr[i].childNodes[3].getAttribute("id"); } num = jsTrim(document.getElementById(period+"_number").firstChild.nodeValue);//期数的开奖号码 for (var i=0; i<num.length;i++){
numArr[i]= num.substring(i,i+1); var id = period+"_"+i+"_"+numArr[i];//单元格id if (i%2==0){ document.getElementById(id).className="c_red"; }else{ document.getElementById(id).className="c_blue"; } } } } /*删除空行和空格*/ function jsTrim(str){ var re; re = /^[ /t]*|[ /t]*$/g; str = str.replace(re, ''); var p=//s/g; str=str.replace(p,""); return(str); }</SCRIPT> </head>
<body οnlοad="javascript:init()">
<table width="100%" border="0" cellspacing="0" cellpadding="0"> <TBODY id="data"> <ww:iterator value="p_lst" status="rows"> <tr> <td class="id"><ww:property value="#rows.index" /></td> <td class="id" id="<ww:property value='serialNum'/>"> <ww:property value="serialNum" /> </td> <td class="lottey" id="<ww:property value='serialNum'/>_number"> <ww:property value="number" /> </td> <td> <TABLE width="100%"> <TBODY id="display"> <tr> <td class="c1" id="<ww:property value='serialNum'/>_0_0"> 0 </td> <td class="c1" id="<ww:property value='serialNum'/>_0_1"> 1 </td> <td class="c1" id="<ww:property value='serialNum'/>_0_2"> 2 </td> <td class="c1" id="<ww:property value='serialNum'/>_0_3"> 3 </td> <td class="c1" id="<ww:property value='serialNum'/>_0_4"> 4 </td> <td class="c1" id="<ww:property value='serialNum'/>_0_5"> 5 </td> <td class="c1" id="<ww:property value='serialNum'/>_0_6"> 6 </td> <td class="c1" id="<ww:property value='serialNum'/>_0_7"> 7 </td> <td class="c1" id="<ww:property value='serialNum'/>_0_8"> 8 </td> <td class="c1" id="<ww:property value='serialNum'/>_0_9"> 9 </td> <td class="c2" id="<ww:property value='serialNum'/>_1_0"> 0 </td> <td class="c2" id="<ww:property value='serialNum'/>_1_1"> 1 </td> <td class="c2" id="<ww:property value='serialNum'/>_1_2"> 2 </td> <td class="c2" id="<ww:property value='serialNum'/>_1_3"> 3 </td> <td class="c2" id="<ww:property value='serialNum'/>_1_4"> 4 </td> <td class="c2" id="<ww:property value='serialNum'/>_1_5"> 5 </td> <td class="c2" id="<ww:property value='serialNum'/>_1_6"> 6 </td> <td class="c2" id="<ww:property value='serialNum'/>_1_7"> 7 </td> <td class="c2" id="<ww:property value='serialNum'/>_1_8"> 8 </td> <td class="c2" id="<ww:property value='serialNum'/>_1_9"> 9 </td> <td class="c1" id="<ww:property value='serialNum'/>_2_0"> 0 </td> <td class="c1" id="<ww:property value='serialNum'/>_2_1"> 1 </td> <td class="c1" id="<ww:property value='serialNum'/>_2_2"> 2 </td> <td class="c1" id="<ww:property value='serialNum'/>_2_3"> 3 </td> <td class="c1" id="<ww:property value='serialNum'/>_2_4"> 4 </td> <td class="c1" id="<ww:property value='serialNum'/>_2_5"> 5 </td> <td class="c1" id="<ww:property value='serialNum'/>_2_6"> 6 </td> <td class="c1" id="<ww:property value='serialNum'/>_2_7"> 7 </td> <td class="c1" id="<ww:property value='serialNum'/>_2_8"> 8 </td> <td class="c1" id="<ww:property value='serialNum'/>_2_9"> 9 </td> <td class="c2" id="<ww:property value='serialNum'/>_3_0"> 0 </td> <td class="c2" id="<ww:property value='serialNum'/>_3_1"> 1 </td> <td class="c2" id="<ww:property value='serialNum'/>_3_2"> 2 </td> <td class="c2" id="<ww:property value='serialNum'/>_3_3"> 3 </td> <td class="c2" id="<ww:property value='serialNum'/>_3_4"> 4 </td> <td class="c2" id="<ww:property value='serialNum'/>_3_5"> 5 </td> <td class="c2" id="<ww:property value='serialNum'/>_3_6"> 6 </td> <td class="c2" id="<ww:property value='serialNum'/>_3_7"> 7 </td> <td class="c2" id="<ww:property value='serialNum'/>_3_8"> 8 </td> <td class="c2" id="<ww:property value='serialNum'/>_3_9"> 9 </td> <td class="c1" id="<ww:property value='serialNum'/>_4_0"> 0 </td> <td class="c1" id="<ww:property value='serialNum'/>_4_1"> 1 </td> <td class="c1" id="<ww:property value='serialNum'/>_4_2"> 2 </td> <td class="c1" id="<ww:property value='serialNum'/>_4_3"> 3 </td> <td class="c1" id="<ww:property value='serialNum'/>_4_4"> 4 </td> <td class="c1" id="<ww:property value='serialNum'/>_4_5"> 5 </td> <td class="c1" id="<ww:property value='serialNum'/>_4_6"> 6 </td> <td class="c1" id="<ww:property value='serialNum'/>_4_7"> 7 </td> <td class="c1" id="<ww:property value='serialNum'/>_4_8"> 8 </td> <td class="c1" id="<ww:property value='serialNum'/>_4_9"> 9 </td> </tr> </TBODY> </TABLE> </td> </tr> </ww:iterator> </TBODY> </table> </body>
</html>
