<table id="selectedTable">
<thead>
<tr>
<td>ID</td>
<td>VAL1</td>
<td>VAL2</td>
</tr>
</thead>
<tbody id="selectedTableBody">
<tr>
<td>1</td>
<td name="positionColumn"><input name="position" value="1" /></td>
<td name="predecessorColumn"><input name="predecessor" value="0"/></td>
</tr>
<tr>
<td>2</td>
<td name="positionColumn"><input name="position" value="2"/></td>
<td name="predecessorColumn"><input name="predecessor" value="1"/></td>
</tr>
<tr>
<td>2</td>
<td name="positionColumn"><input name="position" value="2"/></td>
<td name="predecessorColumn"><input name="predecessor" value="1"/></td>
</tr>
</tbody>
</table>
<script>
function addEvn()
{
alert("event added...");
var x = document.getElementById("selectedTable").rows[1].cells[1].children[0];
x.setAttribute("onkeypress",writePredecessor());
}
function writePredecessor()
{
alert("WP Called");
var x = document.getElementById("selectedTable").rows[1].cells[1].children[0];
var y = document.getElementById("selectedTable").rows[1].cells[2].children[0];
y.value=x.value-1;
}
window.addEventListener("load",addEvn);
</script>
每当输入一个文本框值时,我都添加了一个事件。但是该事件没有触发。如果我在位置文本框中键入数字,则前任文本框应自动分配给相同的数字减1。
答案 0 :(得分:4)
x.setAttribute("onkeypress",writePredecessor());
您正在将onkeypress
属性设置为调用writePredecessor()
的返回值。由于该函数没有返回语句,因此undefined
会被字符串化为"undefined"
,这是一些无效的JavaScript。
使用x.addEventListener("keypress", writePredecessor)
,就像在脚本末尾处理加载事件一样。