我无法使用jQuery将行添加到表中

时间:2014-04-30 07:01:34

标签: jquery

当我使用jQuery在下拉列表中选择任何数字时,我无法在id为myTable2的表中添加行。我想在此表中添加tr。

我的代码是:

    <script src="js/jquery.min.js" type="text/javascript">
    </script>
    <script>

    function AddRow(id)
    {
     alert(id)
     for(var i=0;i<id-1;i++)
     {
   var text_box = "<tr><td><input type='text' name='dest[]'  value='' size='30' />
     </td>          <td><input type='text' name='destsub[]'  value='' size='35' />
    </td></tr>";
     $('#myTable2').append(text_box)    
    }

     }
    </script>

    DESTINATION COVERED
    <select name="covered" id="covered"  onchange="AddRow(this.value)">
      <?php

      for($i=1;$i<=100;$i++)
      {

      ?>
         <option value="<?php echo $i; ?>" ><?php echo  $i; ?></option>

         <?php

         }

         ?>
      </select>

    <table id="myTable2"  width="587" border="0">
    </table>

有人帮帮我吗?

2 个答案:

答案 0 :(得分:0)

http://jsfiddle.net/uXvJJ/你可以在这里看到它有效:

应该由你的php生成的HTML:

<table id="myTable2"  width="587" border="0">
    <tr>
        <td height="23"><strong>DESTINATION COVERED</strong></td>
        <td height="23">
            <select name="covered" id="covered"  onchange="AddRow(this.value)">    
                <option value="0" >0</option>
                <option value="1" >1</option>
                <option value="2" >2</option>
            </select>
        </td>
    </tr>
</table>

使用Javascript:

 function AddRow(id)
 {
     alert(id)
     for(var i=0;i<id-1;i++)
     {
       var text_box = "<tr><td><input type='text' name='dest[]'  value='' size='30' /></td><td><input type='text' name='destsub[]'  value='' size='35' /></td></tr>";
         $('#myTable2').append(text_box)    
    }
}

由于for循环中的i < id-1,它仅在值为2或更大时添加行。只有当您将值2或更多值作为参数传递时,它才会添加行。

更新

我在这里添加了您更新的Html,它也有效:http://jsfiddle.net/uXvJJ/2/

HTML:

   <select name="covered" id="covered"  onchange="AddRow(this.value)">    
       <option value="0" >0</option>
       <option value="1" >1</option>
       <option value="2" >2</option>
    </select>
    <table id="myTable2"  width="587" border="0">
    </table>

更新2

添加了另一个选项并演示了针对for循环的修复

http://jsfiddle.net/uXvJJ/3/

 function AddRow(id)
 {
     alert(id)
     for(var i=0;i<id;i++)
     {
       var text_box = "<tr><td><input type='text' name='dest[]'  value='' size='30' /></td><td><input type='text' name='destsub[]'  value='' size='35' /></td></tr>";
         $('#myTable2').append(text_box)    
    }
}

答案 1 :(得分:0)

您的AddRow函数没有附加行,它会附加一个空文本注释。这是一个工作小提琴,可以满足你的需要http://jsfiddle.net/sfarsaci/w3kj6/