0
<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ずつ減ります。 。テーブル内のテキストボックスに対してonkeypressイベントが発生しないのはなぜですか?
私がメソッドから返す属性があれば、 'writePredecessor()'しか使うことができません。そうでなければ 'writePredecessor'を返す必要があります。答えは – David
です@David - いいえ、そうではありません。重要な点は、関数をイベントハンドラとして割り当て、直ちに関数を呼び出すのではなく、戻り値( 'undefined')をイベントハンドラとして割り当てることです。 – Quentin