猿问

js设置添加行后可以获取到原先每列的宽度,但是赋值给新增加行的每一列,不起作用

<!DOCTYPE html>
<html>
 <head>
  <title> new document </title>  
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>   
  <script type="text/javascript"> 
    window.onload = function(){              
    //鼠标移到不同行上时背景色改为色值为 #f2f2f2,移开鼠标时则恢复为原背景色 #fff
var tr=document.getElementsByTagName('tr');
for(var i=0;i<tr.length;i++){
tr[i].onmouseover=function(){
this.style.backgroundColor='#f2f2f2';
}
tr[i].onmouseout=function(){
this.style.backgroundColor='#fff';
}
}
}   
    // 编写一个函数,供添加按钮调用,动态在表格的最后一行添加子节点;
function addrow(){
var tbody=document.getElementById('table').lastChild;
var tr=document.getElementsByTagName('tr');
//根据列标题,获取列数
var th=document.getElementsByTagName('th');
var newtr=document.createElement('tr');
for(var i=0;i<th.length;i++){
var newtd=document.createElement('td');
if(i!=2){
newtd.innerHTML="<input type='text'>";
}else{
newtd.innerHTML="<a href='javascript:;' onclick='deleterow(this)'>删除</a>"
}
//newtd.offsetWidth=th[i].offsetWidth;
newtd.style.width=th[i].offsetWidth;
console.log(th[i].offsetWidth);
newtr.appendChild(newtd);
}
tbody.appendChild(newtr);
}
    // 创建删除函数
    function deleterow(obj){
    var tbody=document.getElementById('table');
    //console.log(tbody);
    var tr=obj.parentNode.parentNode;
    tbody.lastChild.removeChild(tr);
    }    
  </script> 
 </head> 
 <body> 
  <table border="1" width="50%" id="table">
  <tr>
<th>学号</th>
<th>姓名</th>
<th>操作</th>
  </tr>  

  <tr>
<td>xh001</td>
<td>王小明</td>
<td><a href="javascript:;" onclick="deleterow(this)">删除</a></td>   <!--在删除按钮上添加点击事件  -->
  </tr>

  <tr>
<td>xh002</td>
<td>刘小芳</td>
<td><a href="javascript:;" onclick="deleterow(this)">删除</a></td>   <!--在删除按钮上添加点击事件  -->
  </tr>  

  </table>
  <input type="button" value="添加一行" onclick="addrow()" />   <!--在添加按钮上添加点击事件  -->
 </body>
</html>

在addrow()函数,使用newtd.style.width=th[i].offsetWidth赋值的

jugge
浏览 1775回答 3
3回答

jugge

还是必须得对input赋值才行
随时随地看视频慕课网APP
我要回答