Ich habe eine HTML-Tabelle dynamisch von js generiert, und ich möchte jede Zeile ein Ereignis onClick hinzufügen.
Gefallen Sie diesen
(wegen der Notwendigkeit, komplexe Parameter in meinem ursprünglichen Code zu übergeben, verwende ich Javascript Onclick-Funktion hinzugefügt werden):Hinzufügen onclick Ereignis zu Tabelle jeder Zeile
<!DOCTYPE html>
<html>
<body>
<table align="center" id="tableID" border="1" style="cursor: pointer;">
<thead>
<th>Text</th>
<th>MoreText</th>
<th>Lorem</th>
<th>Ipsum</th>
</thead>
</table>
<br />
<script type="text/javascript">
for (var i = 0; i < 4; i++) {
document.getElementById("tableID").innerHTML += '<tr><td>Text</td><td>MoreText</td><td>Lorem</td><td>Ipsum</td></tr>';
document.getElementById("tableID").rows[i+1].onclick = function() {
alert("Hello World");
//alert(i);
};
}
</script>
</body>
</html>
Wenn die Tabellenzeile festgelegt ist und in HTML-Dokument erklärt, mit dieser Methode funktioniert,
aber in meinem Code (dynamisch generierte Tabellenzeile) funktioniert die onClick-Funktion nur in der letzten Zeile.
Ich denke, dass vielleicht asynchrones Problem ist, aber ich kann nicht herausfinden.
UPDATE
Nach @ Quentin Methode, herausgegeben ich meinen Code. Es funktioniert gut.
<!DOCTYPE html>
<html>
<body>
<table align="center" id="tableID" border="1" style="cursor: pointer;">
<thead>
<th>Text</th>
<th>MoreText</th>
<th>Lorem</th>
<th>Ipsum</th>
</thead>
</table>
<br />
<script type="text/javascript">
for (var i = 0; i < 4; i++) {
var table = document.getElementById('tableID');
var tr = document.createElement('tr');
tr.onclick = function() {
alert("Hello World");
};
var td1 = document.createElement('td');
td1.innerText = "Text";
var td2 = document.createElement('td');
td2.innerText = "MoreText";
var td3 = document.createElement('td');
td3.innerText = "Lorem";
var td4 = document.createElement('td');
td4.innerText = "Ipsum";
tr.appendChild(td1);
tr.appendChild(td2);
tr.appendChild(td3);
tr.appendChild(td4);
table.appendChild(tr);
}
</script>
</body>
</html>
Vielen Dank für erklären, wie Sie den Code zu arbeiten. Ich habe meinen Code geändert und es funktioniert einwandfrei. – CryMasK