日期:2014-05-16  浏览次数:20401 次

使用Javascript制作动态表格

JavaScript 动态表格的实现,效果:当点击最后一行时,动态生成新的一行。实现了文本框、单选框、下拉框的动态生成。

?

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ActiveTable 动态表格</title>
</head>
<h2>员工信息统计表</h2>
<body>
 <table id="activetable" border="1" >
 <tr><th>工  号</th><th>姓   名</th><th>性  别</th><th>职    务</th></tr>
 <tr>
  <td><input type="text" name="number" size="8" onclick="addRow();"></td>
  <td><input type="text" name="realname" size="18"></td>
  <td><input type="radio" name="sex" value="男" checked="checked" size="6"><label>男</label>
   <input type="radio" name="sex" value="女" size="6"><label>女</label>
  </td>
  <td>
   <select name="duty" style="width: 100px;">
    <option value="manager">经理</option>
    <option value="assistantmanager">副经理</option>
    <option value="employee">员工</option>
   </select>
  </td>
  </tr>
 
 </table>
</body>

<script type="text/javascript">

 function addRow(){
   var activetable = document.getElementById("activetable");   //找到表格
   var tr = document.createElement("tr");       //创建一行
   
   var td1 = document.createElement("td");       //创建第一个td,工号
   var numberField=document.createElement("input");
   numberField.setAttribute("type", "text");
   numberField.setAttribute("name", "number");
   numberField.setAttribute("size","8");        //宽度为8个字符
   numberField.setAttribute("onclick","addRow()");      //为其添加onclick事件
   td1.appendChild(numberField);          //将input放入td1
   tr.appendChild(td1);            //将td1放入tr

   var td2 = document.createElement("td");       //创建第二个td,姓名
   var realnameField=document.createElement("input");
   realnameField.setAttribute("type", "text");
   realnameField.setAttribute("name", "number");
   realnameField.setAttribute("size", "18");
   td2.appendChild(realnameField);
   tr.appendChild(td2);

   var td3 = document.createElement("td");       //创建第三个td,性别
   var maleField = document.createElement("input");    
   maleField.setAttribute("type","radio");       //创建radio,"男"
   maleField.setAttribute("checked","checked");
   var textMale = document.createTextNode("男");     //创建文本节点,"男"

   var femaleField = document.createElement("input");
   femaleField.setAttribute("type","radio");      //创建radio,"女"
   var textFemale = document.createTextNode(" 女 ");                //创建文本节点,"女"
 
   
   td3.appendChild(maleField);
   td3.appendChild(textMale);

   td3.appendChild(femaleField);
   td3.appendChild(textFemale);
   tr.appendChild(td3);
   

   var td4 = document.createElement("td");         //创建第四个td,职务
   var dutyField= document.createElement("select");    //创建下拉框
   dutyField.setAttribute("name","duty");
   dutyField.setAttribute("style","width:100px");     //设置下拉框宽度为100px
   dutyField.appendChild( createOption("经理 "));
   dutyField.appendChild( createOption("副经理 "));
   dutyField.appendChild( createOption("员工  "));
   td4.appendChild(dutyField);
   tr.appendChild(td4);

   
   var tbody=activetable.children[0];
   tbody.appendChild(tr);

   var trArray=tbody.children;
   var lastTR=trArray[trArray.length-2];       //取得倒数第2个tr
   var lastInput=lastTR.children[0].children[0];     //第1个格子中的输入框
   lastInput.removeAttribute("onclick");       //去掉倒数第二行第一格的onclick事件
  
  }
 func