0

我有一个 HTML 表格,我可以使用 javascript 向该表格添加一个新行。我想为表格上的每个单元格使用 onchange 事件调用 javascript (Ajax) 函数。`

<script type="text/javascript" src="nextTest.js"></script>
    <SCRIPT language="javascript">
            function addRow(tableID) {

            var table = document.getElementById(tableID);

            var rowCount = table.rows.length;
            var row = table.insertRow(rowCount);

            var cell1 = row.insertCell(0);
            cell1.innerHTML = rowCount + 1;

            var cell2 = row.insertCell(1);
            var element2 = document.createElement("input");
            element2.type = "text";
            element2.name = "txtbox[]";
        element2.onchange = nexttest();
            cell2.appendChild(element2);

    }

    </SCRIPT>

</HEAD>
<body>
<INPUT type="button" value="Add Row" onclick="addRow('dataTable')" />

<TABLE id="dataTable" width="350px" border="1">
    <TR>
        <TD> 1 </TD>
        <TD> <INPUT type="text" /> </TD>
    </TR>
</TABLE>

</body>
</html>`

当我按下按钮时,会添加一个新行并触发 onchange 事件。我想要做的是,当有人将数据输入这些新单元格时,我希望触发 onchange 事件。该事件称为“nextTest”,它存储在外部文件中。

当我插入新行时,事件会触发,但如果我更新其中一个单元格,则不会发生任何事情。我究竟做错了什么?

提前致谢

4

2 回答 2

1

您必须分配一个函数,而不是函数调用(被调用函数返回另一个函数除外)。

省略括号:

element2.onchange = nexttest;
于 2013-05-30T09:06:57.693 回答
0
    function nexttest(evt){
        alert(evt.target.value);
    }

    function addRow (tableID) {

        var table = document.getElementById(tableID);

        var rowCount = table.rows.length;
        var row = table.insertRow(rowCount);

        var cell1 = row.insertCell(0);
        cell1.innerHTML = rowCount + 1;

        var cell2 = row.insertCell(1);
        var element2 = document.createElement("input");
        element2.type = "text";
        element2.name = "txtbox[]";
        element2.onchange = nexttest; // give a valid function identifier here .
        cell2.appendChild(element2);

    }

http://jsbin.com/iropam/2/edit

于 2013-05-30T09:14:34.323 回答