不使用jQuery,甚至在表格中獲取onClick的行和列(X,Y)的最有效方法是什麼?如何查找表格中單元格的行號和列號
我認爲只需將一個點擊監聽器分配給該表,並讓它出現在頂端就可以工作,但實際上它只是給我提供了HTMLTableElement。我想從中得到的是Col號碼,以及來自這一位聽衆的行號。那可能嗎?
不使用jQuery,甚至在表格中獲取onClick的行和列(X,Y)的最有效方法是什麼?如何查找表格中單元格的行號和列號
我認爲只需將一個點擊監聽器分配給該表,並讓它出現在頂端就可以工作,但實際上它只是給我提供了HTMLTableElement。我想從中得到的是Col號碼,以及來自這一位聽衆的行號。那可能嗎?
你可以綁定表中,但會保持開放,你可能單元格之間的間距(不具有行或單元格指數)內點擊的可能性。我在下面的例子中決定,我將綁定到單元格本身,從而確保我總是有一個行和單元格索引。
var tbl = document.getElementsByTagName("table")[0];
var cls = tbl.getElementsByTagName("td");
function alertRowCell(e){
var cell = e.target || window.event.srcElement;
alert(cell.cellIndex + ' : ' + cell.parentNode.rowIndex);
}
for (var i = 0; i < cls.length; i++) {
if (cls[i].addEventListener) {
cls[i].addEventListener("click", alertRowCell, false);
} else if (cls[i].attachEvent) {
cls[i].attachEvent("onclick", alertRowCell);
}
}
演示:http://jsbin.com/isedel/2/edit#javascript,html
我想你可以安全地綁定到表本身也和對源要素進行檢查,看它是否是一個細胞或不:
var tbl = document.getElementsByTagName("table")[0];
function alertRowCell (e) {
var cell = e.target || window.event.srcElement;
if (cell.cellIndex >= 0)
alert(cell.cellIndex + ' : ' + cell.parentNode.rowIndex);
}
if (tbl.addEventListener) {
tbl.addEventListener("click", alertRowCell, false);
} else if (tbl.attachEvent) {
tbl.attachEvent("onclick", alertRowCell);
}
您的第二個示例(http://jsbin.com/isedel/4/edit#javascript,html)不適用於第一個列。但是我的上帝,你在正確的軌道上! –
@MarkTomlin對不起。 '0'的'cellIndex'是虛假的。不正確的想法。 – Sampson
http://jsbin.com/isedel/5/edit是完美的!非常感謝! –
window.onload = function() {
document.getElementsByTagName('table')[0].addEventListener('click', function(e) {
alert(e.target);
}, false);
}
這是最簡單的方法來做到這一點。
window.onload = function() {
document.querySelector('#myTable').onclick = function(ev) {
var rowIndex = ev.target.parentElement.rowIndex;
var cellIndex = ev.target.cellIndex;
alert('Row = ' + rowIndex + ', Column = ' + cellIndex);
}
}
<table border="1" id="myTable">
<tr>
<td>first row first column</td>
<td>first row second column</td>
</tr>
<tr>
<td>second row first column</td>
<td>second row second column</td>
</tr>
<tr>
<td>third row first column</td>
<td>third row second column</td>
</tr>
</table>
可能重複[使用Javascript:獲取小區位置(http://stackoverflow.com/questions/4998953/javascript-get-cell-location) - 使用前請先搜索你問一個新問題。 –
@Felix,我搜索了,而且我用的字符串都沒有提出這個問題。對於稍後使用搜索的用戶來說,這應該會更好一些,因爲它使用更常見的術語。 –
根據Jonathan Sampson發佈的內容,我使用了這個。 http://jsbin.com/iqavad/edit#javascript,html –