abu008 2011-10-22 14:20
浏览 303
已采纳

请教JS兼容性问题

这文件在IE下可以运行,在FF下不能,JS不兼容,那位有空的请帮我改下,谢谢
[code="java"]


JS内嵌表格 var gseq=1; var gLastDetailImgObj=null; //显示详细信息 function showDetailNumTable(){ var innerTR = "<table border=\"1\" align='center' width='100%'><tr style=\"background:gray;\"><td>inner11</td><td>inner12</td><td>inner13</td><td>inner14</td><td>inner15</td></tr><tr><td>inner21</td><td>inner22</td><td>inner23</td><td>inner24</td><td>inner25</td></tr><tr><td>inner31</td><td>inner32</td><td>inner33</td><td>inner34</td><td>inner35</td></tr><tr><td>inner41</td><td>inner42</td><td>inner43</td><td>inner44</td><td>inner45</td></tr></table>"; var imgObj=event.srcElement; var tr=getOuterObj(imgObj,'TR'); // 得到tr对象 var newDivId=null; if(!tr.newDivId){ var newTr=document.createElement("<TR></TR>"); // 创建tr var newTd=document.createElement("<TD COLSPAN='"+tr.children.length+"' bgcolor='#F2F09F'></TD>"); // 创建td newDivId='detaildiv'+(gseq++); // 每一行内嵌的divID,每一行的ID都不同 var newDiv=document.createElement("<div id='"+newDivId+"'></div>"); // 创建div newTr.appendChild(newTd); // tr中添加td newTd.appendChild(document.createTextNode("各地区情况对比如下: ")); newDiv.innerHTML = innerTR; // 必须通过innerHTML方式添加内容,通过字符串拼进去的现实不出内容 newTd.appendChild(newDiv); // td中添加div tr.parentNode.insertBefore(newTr,tr.nextSibling); // 必须通过tr的父节点才能用insertBefore,表示插入某个元素,这里表示在tr下个元素的前面(tr的后面)插入一行 tr.newDivId=newDivId; // 把新生成的div的ID赋给DIV } switchVisible(imgObj); // 控制展开还是合上内嵌表格 if(gLastDetailImgObj!=imgObj){ switchVisible(gLastDetailImgObj); gLastDetailImgObj=imgObj; } else{ gLastDetailImgObj=null; } } function switchVisible(imgObj){ if(!imgObj) return; // 如果imgObj对象为空,则返回 var tr=getOuterObj(imgObj,'TR'); var pvisible=('true'!=tr.currentVisibility); tr.currentVisibility=(pvisible?'true':'false'); // pvisible为真时,tr.currentVisibility为true;pvisible为假时,tr.currentVisibility为false; tr.nextSibling.style.display=(pvisible? '':'none'); // pvisible为真时,tr.nextSibling.style.display为'';pvisible为假时,tr.nextSibling.style.display为none; } //取得对象外围符合指定标签的第一个对象 function getOuterObj(obj,tagName){ while(obj!=null){ if(obj.tagName==tagName) return obj; obj=obj.parentNode; } return null; }


姓名 年龄 电话 性别 住址
1 11111111 1 1 1
2 22222222 2 2 2
3 33333333 3 3 3
4 44444444 4 4 4


将上面的代码保存为html格式后就能看到效果

[/code]

  • 写回答

2条回答

  • iteye_8576 2011-10-22 17:24
    关注

    在你代码基础改了下,你看看,ie6,ff3.6 测试好用。
    [code="html"]


    JS内嵌表格 var gseq=1; var gLastDetailImgObj=null; window.onload = function() { var as = document.getElementById('tabstore').getElementsByTagName("a"); for(var i = 0;i < as.length;i++){ // 显示详细信息 as[i].onclick = function(e){ var innerTR = "<table border=\"1\" align='center' width='100%'><tr style=\"background:gray;\"><td>inner11</td><td>inner12</td><td>inner13</td><td>inner14</td><td>inner15</td></tr><tr><td>inner21</td><td>inner22</td><td>inner23</td><td>inner24</td><td>inner25</td></tr><tr><td>inner31</td><td>inner32</td><td>inner33</td><td>inner34</td><td>inner35</td></tr><tr><td>inner41</td><td>inner42</td><td>inner43</td><td>inner44</td><td>inner45</td></tr></table>"; var theEvent = window.event || e; imgObj = theEvent.srcElement?theEvent.srcElement:theEvent.target; var newDivId=null; // 得到tr对象 var tr=getOuterObj(imgObj,'TR'); if(!tr.newDivId){ // 创建tr var newTr=document.createElement("tr"); //创建td var newTd = document.createElement("td"); // 注意属性大小写,否则ie下无效 newTd.setAttribute("colSpan",tr.children.length); newTd.setAttribute("bgColor","#f2f09f"); // 每一行内嵌的divID,每一行的ID都不同 newDivId='detaildiv'+(gseq++); var newDiv = document.createElement("div");// 创建div newDiv.setAttribute("id",newDivId); newTd.appendChild(document.createTextNode("各地区情况对比如下: ")); // 必须通过innerHTML方式添加内容,通过字符串拼进去的现实不出内容 newDiv.innerHTML = innerTR; // td中添加div newTd.appendChild(newDiv); // tr中添加td newTr.appendChild(newTd); // 必须通过tr的父节点才能用insertBefore,表示插入某个元素,这里表示在tr下个元素的前面(tr的后面)插入一行 tr.parentNode.insertBefore(newTr,tr.nextSibling); // 把新生成的div的ID赋给DIV tr.newDivId=newDivId; } switchVisible(imgObj); // 控制展开还是合上内嵌表格 if(gLastDetailImgObj!=imgObj){ switchVisible(gLastDetailImgObj); gLastDetailImgObj=imgObj; } else{ gLastDetailImgObj=null; } } } } function switchVisible(imgObj){ // 如果imgObj对象为空,则返回 if(!imgObj) return; var tr=getOuterObj(imgObj,'TR'); var pvisible=('true'!=tr.currentVisibility); // pvisible为真时,tr.currentVisibility为true;pvisible为假时,tr.currentVisibility为false; tr.currentVisibility=(pvisible?'true':'false'); // pvisible为真时,tr.nextSibling.style.display为'';pvisible为假时,tr.nextSibling.style.display为none; tr.nextSibling.style.display=(pvisible? '':'none'); } //取得对象外围符合指定标签的第一个对象 function getOuterObj(obj,tagName){ while(obj!=null){ if(obj.tagName==tagName) return obj; obj=obj.parentNode; } return null; }


    姓名 年龄 电话 性别 住址
    1 11111111 1 1 1
    2 22222222 2 2 2
    3 33333333 3 3 3
    4 44444444 4 4 4


    将上面的代码保存为html格式后就能看到效果

    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料