这是我对这个令人敬畏的社区的第一个问题。
我正在使用此javascript代码构建动态表:
function addRow(tableID) {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var cell1 = row.insertCell(0);
var element1 = document.createElement("input");
element1.type = "checkbox";
element1.name = "chkbox[]";
cell1.appendChild(element1);
var cell2 = row.insertCell(1);
var element2 = document.createElement("input");
element2.type = "text";
element2.name = "txtbox[]";
element2.onkeypress = "this.style.width = ((this.value.length + 1) * 8) + 'px'";
cell2.appendChild(element2);
}
按照html代码打印出来:
<table id="dataTable" style="width: 300px;" border="0">
<tr>
<td ><input type="checkbox" name="chk" /></td>
<td <input id="txt" type="text" onkeypress="this.style.width = ((this.value.length + 1) * 8) + 'px';"> </td>
</tr>
</table>
我的问题是 - 我希望我的文本输入字段动态消耗,但由于使用'document.createElement(“input”);'在Javascript中,只有第一个文本输入字段动态消耗
答案 0 :(得分:0)
您可以定义扩展功能并在以后重复使用,如下所示:
expandTextBox = function (tb) {
tb.style.width = ((tb.value.length + 1) * 8) + 'px';
}
当你创建元素时:
var element2 = document.createElement("input");
element2.onkeypress = function() { expandTextBox(element2); };
在html中:
<input id="txt" type="text" onkeypress="expandTextBox(this)">
请参阅Fiddle
答案 1 :(得分:0)
在javascript中向动态创建的元素添加事件时,您必须将事件代码定义为 function
而不是字符串!
因此,请将addRow函数修改为:
...
element2.onkeypress = function(){this.style.width = ((this.value.length+1)*8)+'px'};