【问题标题】:Adding rows dynamically into HTML将行动态添加到 HTML
【发布时间】:2013-12-17 04:59:02
【问题描述】:

这是我经过大量研究后得到的,所以虽然我会分享它,

如果我可以进一步优化它,请告诉我。 此代码在单击添加行时添加了一个新行,并且还动态分配了 id 和 name。

        <script type="text/javascript">
        $(document).ready(function(e) {
        //n:variable for generating dynamic values
        var n=1;
        $("#add").click(function() {    
        n++;

       // converting HTML to JS readable format
       var strVar="";
       strVar += "<tr>";
       strVar += "        <td id=\"day\">Day ";
       strVar += n;
       strVar +=" <\/td>";
       strVar += "        <td><textarea name=\"" ;
       strVar += n;
       strVar +="\"cols=\"50\" rows=\"10\" id=\"" 
       strVar += n;
       strVar +="\"><\/textarea><\/td>";
       strVar += "      <\/tr>";

     $(strVar).insertAfter("#mytable tr:nth-last-child(3)");
             document.getElementById("h").value= n;     
             return false;
             });

      });

   </script> 

HTML

    <table>
    <tr id="test">
      <td id="day">Day 1</td>
      <td><textarea name="1" cols="50" rows="10" id="1"></textarea></td>
    </tr>




  <tr><td>&nbsp;</a></td><td><a href="#" id="add" style="color:#00F">Add another Day</td>   </tr>
  <tr>
    <!-- sending hidden field with the number of fields generated for entering into db using php-->
    <td>&nbsp; <input type="hidden" id="h" value=""/>  </td>
    <td><input type="image" name="button"  src="../images/admin/submit.png" onMouseOver="this.src='../images/admin/submit_hover.png'" onMouseOut="this.src='../images/admin/submit.png'" id="button" value="Add this Item now"></td>
  </tr>
  </table>

【问题讨论】:

    标签: javascript php html dom


    【解决方案1】:

    documentfragment 用于创建快速 dom 节点。

    var f=document.createDocumentFragment();
    for(var a=0;a<5;a++){
     var field=document.createElement('td');
     field.textContent='field '+a;
     f.appendChild(field);
    }
    yourTable.appendChild(document.createElement('tr')).appendChild(f);
    

    较慢但很短。

    var tr='<tr><td>field '+['1','2','3','4','5'].join('</td><td>field ')+'</td></tr>';
    

    【讨论】:

    • 为什么不直接在tr 中追加td
    • 因为 documentfragment 是用来创建快速 dom 节点的
    • 为什么要更快?
    • 测试一下jsperf或者console.time()。为什么要慢一些??我更喜欢快速网站。无论如何,我发布了 2 个我喜欢的解决方案.. 你可以选择任何你想要的。
    • 好吧,我问的是为什么,而不是你如何证明它。另外,我认为不同的浏览器是不一样的。
    猜你喜欢
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 2017-09-26
    • 1970-01-01
    • 2011-10-05
    相关资源
    最近更新 更多