Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用document.createElement(“输入”)方法使输入文本字段动态扩展?_Javascript - Fatal编程技术网

Javascript 如何使用document.createElement(“输入”)方法使输入文本字段动态扩展?

Javascript 如何使用document.createElement(“输入”)方法使输入文本字段动态扩展?,javascript,Javascript,这是我关于这个很棒的社区的第一个问题 我正在使用此javascript代码构建一个动态表: function addRow(tableID) { var table = document.getElementById(tableID); var rowCount = table.rows.length; var row = table.insertRow(rowCount); var cell1 = row.inser

这是我关于这个很棒的社区的第一个问题

我正在使用此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.createElementinput;”在Javascript中,只有第一个文本输入字段动态扩展rest

您可以定义扩展函数并在以后重用它,如下所示:

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)">

请参见

在javascript中将事件添加到动态创建的元素时,必须将事件代码定义为函数而不是字符串! 因此,将addRow函数修改为:

    ...
    element2.onkeypress = function(){this.style.width = ((this.value.length+1)*8)+'px'};

试试这个:element2.style.width=100%;Noope adding->element2.style.width=100%;不行!是的,我只是知道它不能接受字符串!非常感谢您的快速回答: