自知其無知
          不懂,慢慢懂。
          posts - 2,comments - 2,trackbacks - 0

          轉(zhuǎn)自: http://www.javaeye.com/problems/2639

          1. <html>   
          2. <head>   
          3. <title>動態(tài)添加html元素</title>   
          4. <script type="text/javascript">   
          5. <!--   
          6. var textNumber = 1;   
          7. function addCheckDetail(form,afterElement){   
          8.     textNumber++;   
          9.     //創(chuàng)建列表標(biāo)簽   
          10.     var label2=document.createElement("label");   
          11.     label2.appendChild(document.createTextNode("問題所屬方面:"));   
          12.     var select=document.createElement("select");    
          13.     select.setAttribute("select","select"+textNumber);   
          14.     select.setAttribute("size","1");   
          15.     select.setAttribute("id","select"+textNumber);   
          16.     var option1=document.createElement("option");   
          17.     option1.setAttribute("value","1");   
          18.     option1.appendChild(document.createTextNode("方面一"));   
          19.     var option2=document.createElement("option");   
          20.     option2.setAttribute("value","2");   
          21.     option2.appendChild(document.createTextNode("方面二"));       
          22.     label2.appendChild(select);   
          23.     select.appendChild(option1);   
          24.     select.appendChild(option2);   
          25.     form.insertBefore(label2,afterElement);   
          26.        
          27.     // 創(chuàng)建文本標(biāo)簽   
          28.     var label1 = document.createElement("label");   
          29.     // 創(chuàng)建文本框   
          30.     var textField = document.createElement("textarea");   
          31.     textField.setAttribute("name","txt"+textNumber);   
          32.     textField.setAttribute("cols",80);   
          33.     textField.setAttribute("rows",3);   
          34.     textField.setAttribute("id","txt"+textNumber);   
          35.     // 增加標(biāo)簽文本注釋   
          36.     label1.appendChild(document.createTextNode("問題描述"+textNumber+":"));   
          37.     // 把textField放入標(biāo)簽中   
          38.     label1.appendChild(textField);   
          39.     // 把所有的這些增加到form中   
          40.     form.insertBefore(label1,afterElement);   
          41. }   
          42. function removeCheckDetail(form,afterElement){   
          43.     // 假如有文本框個數(shù)超過一個   
          44.     if (textNumber > 1) {    
          45.         // 刪除最后一個添加的文本框   
          46.         form.removeChild(document.getElementById("select"+textNumber).parentNode);   
          47.         form.removeChild(document.getElementById("txt"+textNumber).parentNode);   
          48.         textNumber--;   
          49.     }   
          50. }   
          51. //-->   
          52. </script>   
          53. <style type="text/css">   
          54. <!--   
          55. label {   
          56.   display:block;   
          57.   margin:.25em 0em;   
          58. }   
          59. -->   
          60. </style>   
          61. </head>   
          62. <body>   
          63. <form id="myForm" method="get" action="./" />  
          1. <table><tbody>   
          2.         <label>問題所屬方面:   
          3.         <select name="select" size="1" id="">   
          4.           <option value="1">問題一</option>   
          5.           <option value="2">問題二</option>   
          6.         </select>   
          7.         </label>   
          8.         <label>問題描述1:<textarea name="txt1" cols="80" rows="3"></textarea></label>   
          9.            
          10.         <p>   
          11.           <input type="button" value="添加一個問題" onclick="addCheckDetail(this.form,this.parentNode)" />   
          12.           <input type="button" value="刪除最后一個問題" onclick="removeCheckDetail(this.form)" />   
          13.         </p>   
          14.         <p><input type="Submit" value="保存" /></p>  
          1. </tbody></table>   
          2.   
          3. </form>   
          4. </body>   
          5. </html>  

           我想用javascript動態(tài)增加行,當(dāng)form中沒有table標(biāo)簽時是可以增加的,像上面增加了table標(biāo)簽就出現(xiàn)錯誤了,請問各位該如何解決?

              
          =======================================
          解決方案:
          由于form.insertBefore是將指定節(jié)點添加到form的直接子節(jié)點上,由于form中只有一個table,沒有afterElement這個直接子節(jié)點.所以會報錯.
          input標(biāo)簽的parentNode即p標(biāo)簽,它的直接父結(jié)點是TBODY標(biāo)簽.所以只能用TBodyElement.insertBefore.進(jìn)行插入.

          Js代碼 復(fù)制代碼
          1. form.insertBefore(label2,afterElement);   
          2. form.insertBefore(label1,afterElement);  

          兩句改為:
          1. afterElement.parentNode.insertBefore(label2,afterElement);   
          2. afterElement.parentNode.insertBefore(label1,afterElement);  

          posted on 2008-12-15 23:23 CopyHoo 閱讀(812) 評論(0)  編輯  收藏 所屬分類: Java Web
          主站蜘蛛池模板: 四会市| 普安县| 疏附县| 临漳县| 轮台县| 廉江市| 天柱县| 建平县| 新邵县| 达孜县| 洪泽县| 凤台县| 舞阳县| 诸城市| 耒阳市| 平江县| 商城县| 宁德市| 额济纳旗| 敖汉旗| 承德县| 墨竹工卡县| 禄丰县| 德格县| 浙江省| 南和县| 阳东县| 大城县| 五华县| 江华| 山东省| 平泉县| 惠东县| 通州区| 茌平县| 建水县| 泾阳县| 陇南市| 吐鲁番市| 桐城市| 五大连池市|