JavaScript在atable中为唯一id添加另一行,显示id的NAN值
JavaScript add another row in atable for unique id showing NAN value for id
我有一个html表。我的标记是这样的:
<table id="invoices-product-detail">
<tbody id="tableToModify">
<?php
$i=1;
while($i<2){
?>
<tr>
<td>
<input type="hidden" name="prdid[]" id="prd_id<?php echo $i; ?>" />
</td>
<td>
<input type="text" name="prdcost[]" id="prd_cost<?php echo $i; ?>" value="0" disabled="disabled" style="color:#333;" />
</td>
<td>
<input type="text" name="prdquentity[]" id="prd_quentity<?php echo $i; ?>" tabindex="<?php echo 3+($i*5);?>" onKeyUp="calprice1(this.value,'<?php echo $i; ?>');" value="1" />
</td>
<td>
<input type="text" name="prddamount[]" tabindex="<?php echo 5+($i*5);?>" readonly="true" id="prd_damount<?php echo $i; ?>" onKeyUp="calprice2(this.value,'<?php echo $i; ?>');" />
</td>
<td id="readonly">
<input readonly="readonly" name="prdprice[]" id="prd_price<?php echo $i; ?>" value="0" />
</td>
</tr>
<?php
$i++;
}
?>
</tbody>
</table><!--#invoices-product-detail-->
现在,我有一个名为的按钮添加新行:
<input type="button" onClick="createRow();" value="Add a new line"></span>
在js文件中,我有类似于的createRow()
函数
function createRow() {
var newlineno = document.forms[0].elements["prdprice[]"].length;
newlineno++;
var row = document.createElement('tr');
var col1 = document.createElement('td');
var col2 = document.createElement('td');
var col3 = document.createElement('td');
var col4 = document.createElement('td');
var col5 = document.createElement('td');
var col6 = document.createElement('td');
var col7 = document.createElement('td');
row.appendChild(col1);
row.appendChild(col2);
row.appendChild(col3);
row.appendChild(col4);
row.appendChild(col5);
row.appendChild(col6);
row.appendChild(col7);
col1.innerHTML = "<input type='"hidden'" name='"prdid[]'" id='"prd_id"+newlineno+"'" /><input type='"text'" name='"prdname[]'" id='"prd_name"+newlineno+"'";
col2.innerHTML = "<input type='"text'" disabled='"disabled'" name='"prddesc[]'" id='"prd_desc"+newlineno+"'" />";
col3.innerHTML = "<input type='"text'" disabled='"disabled'" name='"prdcost[]'" id='"prd_cost"+newlineno+"'" value='"0'" />";
col4.innerHTML = "<input type='"text'" name='"prdquentity[]'" id='"prd_quentity"+newlineno+"'" onKeyUp='"calprice1(this.value,'"+newlineno+"');'" value='"1'" />";
col5.innerHTML = "<select name='"prddtype[]'" class='"discount-type'" id='"prd_dtype"+newlineno+"'" >"+document.getElementById("prd_dtype0").innerHTML+"</select>";
col6.innerHTML = "<input type='"text'" name='"prddamount[]'" id='"prd_damount"+newlineno+"'" onKeyUp='"calprice2(this.value,'"+newlineno+"');'" />";
col7.innerHTML = "<input type='"text'" name='"prdprice[]'" id='"prd_price"+newlineno+"'" class='"price-input-text'" disabled='"disabled'" value='"0'" />";
var table = document.getElementById("tableToModify"); // find table to append to
table.appendChild(row); // append row to table
}
现在这里一切都很好。根据js,我可以很容易地添加另一行。但当我检查输入字段的id时,我发现第一行(默认行)显示<input type="text id="prd_name1">
,哪一个是好的。但当我点击添加新行时,新创建的行id是<input type="text" id="prd_nameNaN">
。但在这里,我希望id应该像<input type="text" id="prd_name2">
,对于第三行<input type="text" id="prd_name3">
,以此类推。在这里,对于每一个新创建的行,行数都将添加到每个字段id中。有人能告诉我为什么会出现这个问题吗?任何帮助和建议都是非常可观的。
document.forms[0].elements["prdprice[]"]
将只返回单个DOM元素,因此在此调用.length
将返回undefined
:
var newlineno = document.forms[0].elements["prdprice[]"].length; // Undefined
newlineno++; // NaN
如果可能,请使用querySelectorAll:
var newlineno = document.querySelectorAll("[name='prdprice[]']").length
看这把小提琴演示三个输入:http://jsfiddle.net/Blade0rz/3Eyba/
这个演示了一个:http://jsfiddle.net/Blade0rz/kqakC/
变量newlineno
似乎不是数字,这就是NaN
所代表的。检查以下行是否创建了一个实际号码:
var newlineno = document.forms[0].elements["prdprice[]"].length;
newlineno++;
console.log(newlineno); // open Firefox' Firebug or a similar tool to see the output of this variable
您所要做的就是在newlineno变量周围添加一个parseInt()函数,将其转换为整数值。我遇到了同样的问题,它像一样得到了解决
var size=parseInt(document.getElementById(disease+"members").value);
也许你应该使用.value而不是.length
示例:var newlineno=parseInt(document.getElementById("prdprice").value);
或者对上面的例子做一些修改,它可能对你有用。
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 在追加一行并调用其中的时差函数时生成动态id
- 使用setAttribute将id设置为元素最后一行的td
- 单击编辑按钮时,如何使用 jquery 从循环表的每一行传递 id
- 在一行中使用克隆功能后,如何为每行创建不同的ID
- 使用表单中的PHP按钮根据变量ID从MYSQL数据库表中删除一行
- 将 id 从 foreach 循环动态传递到仅申请一行的锚点标签到 jquery,我无法获得其他行的弹出窗口
- 当我点击ImageButton(telerik)时,检索一行的ID
- JavaScript在atable中为唯一id添加另一行,显示id的NAN值
- 隐藏没有class和id属性的html表2的第一行
- Jquery移动到下一行's输入元素的id
- 使用Javascript或Jquery在创建每一行时动态地为表创建递增id
- 使用行id删除一行javascript
- 如何在同一行中显示具有其id的两个tr's
- 我想删除任意一行的id
- 在Javascript中克隆一行时增加元素Id
- 我怎么能从这个字符串和它的子字在一行中得到id
- AngularJS:我该如何根据ID从数组中选择一行
- 如何知道哪一行选择了哪个单选按钮 ID
- 在一行中按ID选择多个元素