IE里不能执行这段动态增加表格到id为tableid的代码,请老师帮忙解决一下

lengye0913 2013-04-07 10:05:19
IE里不能执行这段动态增加表格到id为tableid的代码,请老师帮忙解决一下,增加到ID为LC的DIV里就可以,但这样没有了CSS效果,

<script language="javascript">
function lc() {
//代入值
dd=Number(document.getElementById("dd").value); //尺寸精确到几位
ddd=Number(document.getElementById("ddd").value); //比值精确到几位
bianhao=document.getElementById("inputbainhao").value;
basem = Number(document.getElementById("basem").value);
minm = Number(document.getElementById("minm").value);
maxm= Number(document.getElementById("maxm").value);
basex= Number(document.getElementById("basex").value);
basey= Number(document.getElementById("basey").value);
basez= Number(document.getElementById("basez").value);
mcx= Number(document.getElementById("mcx").value);
mcy= Number(document.getElementById("mcy").value);
mcz= Number(document.getElementById("mcz").value);
//先得最小码
zxx=basex-(basem-minm)*mcx;
//alert('x'+zxx);//测试
zxy=basey-(basem-minm)*mcy;
//alert('y'+zxy);//测试
zxz=basez-(basem-minm)*mcz;
//alert('z'+zxz);//测试
//alert(bianhao);//测试
//计算全部
j=0 ; //码差增加倍数
for (var i=minm; i<=maxm; i++) {
if(i==basem){ //等于本码CSS为红色,粗体
document.getElementById("tableid").innerHTML +='<tr><td class="td2"><input type="text" id="m'+i+'" value="'+i+'码" class="td00"></td><td class="td2"><input type="text" id="x'+i+'" value="'+Number(zxx+mcx*j).toFixed(dd)+'" class="td00"></td><td class="td2"><input type="text" id="y'+i+'" value="'+Number(zxy+mcy*j).toFixed(dd)+'" class="td00"></td><td class="td2"><input type="text" id="z'+i+'" value="'+Number(zxz+mcz*j).toFixed(dd)+'" class="td00"></td><td class="td2"><input type="text" id="bx'+i+'" value="" class="td00"></td><td class="td2"><input type="text" id="by'+i+'" value="" class="td00"></td><td class="td2"><input type="text" id="bz'+i+'" value="" class="td00"></td><td class="td2"><input type="text" id="" value="这是本码" class="td00"></td></tr>';
j+=1;
}else{
document.getElementById("tableid").innerHTML +='<tr><td class="td2"><input type="text" id="m'+i+'" value="'+i+'码" class="td3"></td><td class="td2"><input type="text" id="x'+i+'" value="'+Number(zxx+mcx*j).toFixed(dd)+'" class="td3"></td><td class="td2"><input type="text" id="y'+i+'" value="'+Number(zxy+mcy*j).toFixed(dd)+'" class="td3"></td><td class="td2"><input type="text" id="z'+i+'" value="'+Number(zxz+mcz*j).toFixed(dd)+'" class="td3"></td><td class="td2"><input type="text" id="bx'+i+'" value="" class="td3"></td><td class="td2"><input type="text" id="by'+i+'" value="" class="td3"></td><td class="td2"><input type="text" id="bz'+i+'" value="" class="td3"></td><td class="td2"><input type="text" id="" value="备注" class="td4"></td></tr>';
//alert(document.getElementById("m"+i).value);//测试
//alert(document.getElementById("x"+i).value);//测试
j+=1;
}
} //for结束
document.getElementById("bh").value = String(bianhao);
} //lc()结束
</script> <!--JS计算结束-->
<body>
<!--输入值表单-->
<div id="box">
<div id="fm">
<form>
<fieldset>
<legend><span>量产编号:<input type="text" id="inputbainhao" class="tt"/>
基本码号: <input type="text" id="basem" class="ttt"/>
从 <input type="text" id="minm" class="ttt"/>
到 <input type="text" id="maxm" class="ttt"/>码</span>
</legend>
<span>本码X: <input type="text" id="basex" name="basem" class="textstyle"/></span>
<span>本码Y: <input type="text" id="basey" class="textstyle"/></span>
<span>本码Z: <input type="text" id="basez" class="textstyle"/></span>
尺寸精确度:<input type="text" id="dd" value="4" class="ttt"/>
比值精确度:<input type="text" id="ddd" value="4" class="ttt"/>
<br/>
<span>码差X: <input type="text" id="mcx" class="textstyle"/></span>
<span>码差Y: <input type="text" id="mcy" class="textstyle"/></span>
<span>码差Z: <input type="text" id="mcz" class="textstyle"/></span>
<input type="button" value="计算数据" onclick="lc()"/>
<input type="button" value="计算比值" onclick="bz()"/>
<input type="button" value="清空数据" onclick="history.go(0)">
</fieldset>
</form>
</div><br/><br/><br/> <!--输入值表单结束-->

<div id="lc"> <!--显示量产-->
<table id="tableid" border="1"> <!--表格开始-->
<tr>
<td colspan="8" class="td1"><span class="td0">编号:</span><input type="text" id="bh" class="td0"></td>
</tr>
<tr>
<td width="60" rowspan="2" class="td1">码号</td>
<td colspan="3"class="td1">尺寸</td>
<td colspan="3" class="td1">比值</td>
<td width="150" rowspan="2" class="td1">备注</td>
</tr>
<tr>
<td width="80" class="td1">X</td>
<td width="80" class="td1">Y</td>
<td width="80" class="td1">Z</td>
<td width="80" class="td1">X</td>
<td width="80" class="td1">Y</td>
<td width="80" class="td1">Z</td>
</tr>
<!--表格循环输出-->
</table> <!--表格结束-->
</div> <!--显示量产结束-->
</div>
...全文
192 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lengye0913 2013-04-08
  • 打赏
  • 举报
回复
是这样吗,还是不行啊,在tbody加个ID,插入到这个ID也不行
<table id="tableid"  border="1">   <!--表格开始-->
<tbody>
  <tr>
    <td colspan="8" class="td1"><span class="td0">编号:</span><input type="text" id="bh" class="td0"></td>
  </tr>
  <tr>
    <td width="60" rowspan="2" class="td1">码号</td>
    <td colspan="3"class="td1">尺寸</td>
    <td colspan="3" class="td1">比值</td>
    <td width="150" rowspan="2" class="td1">备注</td>
  </tr>
  <tr>
    <td width="80" class="td1">X</td>
    <td width="80" class="td1">Y</td>
    <td width="80" class="td1">Z</td>
    <td width="80" class="td1">X</td>
    <td width="80" class="td1">Y</td>
    <td width="80" class="td1">Z</td>
  </tr>
</tbody>
<!--表格循环输出-->
</table> 
lengye0913 2013-04-08
  • 打赏
  • 举报
回复
引用 4 楼 ftiger 的回复:
仔细跟踪后发现是这个问题,IE中document.getElementById("tableid").innerHTML自带了<tbody>....</tbody>,然后试图在</tbody>之后加入<tr>肯定报错。 为此,我建议你使用jquery框架来处理这部分内容, 另外,你变量名起得有问题,lc又是个domid,又是个函数,IE下面会出错,找不到lc这个函……
非常感谢老师不吝赐教,那个本来想加var的,但另一个的函数获取不到,所以就没加了,jquery还不懂,也知道这个可以,也知道什么原因,就是技术不到,解决不了,多谢老师帮忙,直接给出了答案
NANU-NANA 2013-04-08
  • 打赏
  • 举报
回复
谢谢楼主,让我也学到了新东西
ftiger 2013-04-08
  • 打赏
  • 举报
回复
仔细跟踪后发现是这个问题,IE中document.getElementById("tableid").innerHTML自带了<tbody>....</tbody>,然后试图在</tbody>之后加入<tr>肯定报错。 为此,我建议你使用jquery框架来处理这部分内容, 另外,你变量名起得有问题,lc又是个domid,又是个函数,IE下面会出错,找不到lc这个函数,还有函数里所有的变量都要加var ,要不很容易和同id的dom对象混淆。

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script language="javascript">
function lcFn() {
    //代入值
	var dd=Number(document.getElementById("dd").value);    //尺寸精确到几位
	var ddd=Number(document.getElementById("ddd").value);    //比值精确到几位
	var bianhao=document.getElementById("inputbainhao").value;
	var basem = Number(document.getElementById("basem").value);
	var minm = Number(document.getElementById("minm").value);
	var maxm= Number(document.getElementById("maxm").value);
	var basex= Number(document.getElementById("basex").value);
	var basey= Number(document.getElementById("basey").value);
	var basez= Number(document.getElementById("basez").value);
	var mcx= Number(document.getElementById("mcx").value);
	var mcy= Number(document.getElementById("mcy").value);
	var mcz= Number(document.getElementById("mcz").value);
    //先得最小码
	var zxx=basex-(basem-minm)*mcx;
        //alert('x'+zxx);//测试
	var zxy=basey-(basem-minm)*mcy;
        //alert('y'+zxy);//测试
	var zxz=basez-(basem-minm)*mcz;
        //alert('z'+zxz);//测试
        //alert(bianhao);//测试
    //计算全部
	var j=0 ;    //码差增加倍数
        for (var i=minm; i<=maxm; i++) {
			var old= $("#tableid").html();
            if(i==basem){    //等于本码CSS为红色,粗体
               $("#tableid").html(old+'<tr><td class="td2"><input type="text" id="m'+i+'" value="'+i+'码" class="td00"></td><td class="td2"><input type="text" id="x'+i+'" value="'+Number(zxx+mcx*j).toFixed(dd)+'" class="td00"></td><td class="td2"><input type="text" id="y'+i+'" value="'+Number(zxy+mcy*j).toFixed(dd)+'" class="td00"></td><td class="td2"><input type="text" id="z'+i+'" value="'+Number(zxz+mcz*j).toFixed(dd)+'" class="td00"></td><td class="td2"><input type="text" id="bx'+i+'" value="" class="td00"></td><td class="td2"><input type="text" id="by'+i+'" value="" class="td00"></td><td class="td2"><input type="text" id="bz'+i+'" value="" class="td00"></td><td class="td2"><input type="text" id="" value="这是本码" class="td00"></td></tr>');
                j+=1;
                }else{
                $("#tableid").html(old+'<tr><td class="td2"><input type="text" id="m'+i+'" value="'+i+'码" class="td3"></td><td class="td2"><input type="text" id="x'+i+'" value="'+Number(zxx+mcx*j).toFixed(dd)+'" class="td3"></td><td class="td2"><input type="text" id="y'+i+'" value="'+Number(zxy+mcy*j).toFixed(dd)+'" class="td3"></td><td class="td2"><input type="text" id="z'+i+'" value="'+Number(zxz+mcz*j).toFixed(dd)+'" class="td3"></td><td class="td2"><input type="text" id="bx'+i+'" value="" class="td3"></td><td class="td2"><input type="text" id="by'+i+'" value="" class="td3"></td><td class="td2"><input type="text" id="bz'+i+'" value="" class="td3"></td><td class="td2"><input type="text" id="" value="备注" class="td4"></td></tr>');
                //alert(document.getElementById("m"+i).value);//测试
                //alert(document.getElementById("x"+i).value);//测试
                j+=1;
            }
        }    //for结束
        document.getElementById("bh").value = String(bianhao);
}    //lc()结束
</script>    <!--JS计算结束-->
<body>
<!--输入值表单-->
<div id="box">
<div id="fm">
<form>
  <fieldset>
    <legend><span>量产编号:<input type="text" id="inputbainhao" class="tt"/>
                  基本码号: <input type="text" id="basem" class="ttt"/>
                  从 <input type="text" id="minm" class="ttt"/>
                  到 <input type="text" id="maxm" class="ttt"/>码</span>
    </legend>
        <span>本码X: <input type="text" id="basex" name="basem" class="textstyle"/></span>
        <span>本码Y: <input type="text" id="basey" class="textstyle"/></span>
        <span>本码Z: <input type="text" id="basez" class="textstyle"/></span>
        尺寸精确度:<input type="text" id="dd" value="4" class="ttt"/>
        比值精确度:<input type="text" id="ddd" value="4" class="ttt"/>
        <br/>
        <span>码差X: <input type="text" id="mcx" class="textstyle"/></span>
        <span>码差Y: <input type="text" id="mcy" class="textstyle"/></span>
        <span>码差Z: <input type="text" id="mcz" class="textstyle"/></span>
        <input type="button" value="计算数据" onclick="lcFn()"/>
        <input type="button" value="计算比值" onclick="bz()"/>
        <input type="button" value="清空数据" onclick="history.go(0)"> 
    </fieldset>
</form>
</div><br/><br/><br/>    <!--输入值表单结束-->
 
<div id="lc">            <!--显示量产-->
<table id="tableid"  border="1">   <!--表格开始-->
  <tr>
    <td colspan="8" class="td1"><span class="td0">编号:</span><input type="text" id="bh" class="td0"></td>
  </tr>
  <tr>
    <td width="60" rowspan="2" class="td1">码号</td>
    <td colspan="3"class="td1">尺寸</td>
    <td colspan="3" class="td1">比值</td>
    <td width="150" rowspan="2" class="td1">备注</td>
  </tr>
  <tr>
    <td width="80" class="td1">X</td>
    <td width="80" class="td1">Y</td>
    <td width="80" class="td1">Z</td>
    <td width="80" class="td1">X</td>
    <td width="80" class="td1">Y</td>
    <td width="80" class="td1">Z</td>
  </tr>
<!--表格循环输出-->
</table>    <!--表格结束-->
</div>        <!--显示量产结束-->
</div>
ftiger 2013-04-07
  • 打赏
  • 举报
回复
的确应当是tbody问题,IE很过份的,table和tr之间一定要有个tbody。
似梦飞花 2013-04-07
  • 打赏
  • 举报
回复
加一个tbody 吧所有的tr放在tbody里试试

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧