我有一个HTML表格,大约有20列和10行。每列都有一个字母,每行都有一个数字。使每个单元格可单击的最佳方法是什么,以便它执行JavaScript函数并传入坐标?
我已经考虑过将每个单元格转换成id或onclick属性,然后对坐标进行硬编码,但是在将来扩展表格会变得更加困难。
我认为获取单元格所在的行很容易,只需获取父元素即可。但我不知道如何获得专栏?
这是否存在获取单元格行和列的既定方法?
这是特别是页面:http://jonathanb.co.uk/papers/default.html
我有一个链接列表,每个单元格对应一个链接。我计划允许重新排序行和列或至少隐藏一些。目前我正在使用JavaScript创建表,但我认为最好这样做是php。
答案 0 :(得分:2)
您可以使用rowIndex
和cellIndex
动态获取表格单元格的行和列(假设您有一个名为cell
的元素):
var rowNumber = cell.parentNode.rowIndex + 1;
var colNumber = cell.cellIndex + 1;
- 查看开发者控制台输出 -
你应该很容易添加点击监听器(并且取决于你是否想要使用jQuery)。
答案 1 :(得分:1)
您可以使表格可点击,并获取您单击的目标单元格的单元格和行索引。
<!doctype html>
<html lang="en">
<head>
<meta charset= "utf-8">
<title>cell row index</title>
<style>
table{background-color:white}
thead{background-color:green;color:white}
td,th{border:1px #000000 solid;font-size:1em;font-weight:500}
th{font-weight:bold}
h2{color:#191970}
#screenDiv{max-width:800px}
</style>
<script>
function getCellRow(td){
td= td? td.target:window.event? event.srcElement:'';
var rc= [], pa= td.parentNode;
if(pa.tagName== 'TR'){
alert([pa.rowIndex, td.cellIndex]);
}
}
window.onload= function(){
document.getElementsByTagName('table')[0].onclick=getCellRow;
}
</script>
</head>
<body>
<div id="screenDiv">
<h1>Symbol Entities in HTML</h1>
<h2>Greek Alphabet</h2>
<table>
<thead><tr>
<th width="10%">Example</th><th width="20%">Named</th><th width="20%">Numeric</th><th width="50%">Description</th>
</tr></thead>
<tbody>
<tr><td>Α</td><td>&Alpha;</td><td>&#913;</td><td>capital alpha</td></tr>
<tr><td>Β</td><td>&Beta;</td><td>&#914;</td><td>capital beta</td></tr>
<tr><td>Γ</td><td>&Gamma;</td><td>&#915;</td><td>capital gamma</td></tr>
<tr><td>Δ</td><td>&Delta;</td><td>&#916;</td><td>capital delta</td></tr>
<tr><td>Ε</td><td>&Epsilon;</td><td>&#917;</td><td>capital epsilon</td></tr>
<tr><td>Ζ</td><td>&Zeta;</td><td>&#918;</td><td>capital zeta</td></tr>
<tr><td>Η</td><td>&Eta;</td><td>&#919;</td><td>capital eta</td></tr>
<tr><td>Θ</td><td>&Theta;</td><td>&#920;</td><td>capital theta</td></tr>
<tr><td>Ι</td><td>&Iota;</td><td>&#921;</td><td>capital iota</td></tr>
<tr><td>Κ</td><td>&Kappa;</td><td>&#922;</td><td>capital kappa</td></tr>
<tr><td>Λ</td><td>&Lambda;</td><td>&#923;</td><td>capital lambda</td></tr>
<tr><td>Μ</td><td>&Mu;</td><td>&#924;</td><td>capital mu</td></tr>
<tr><td>Ν</td><td>&Nu;</td><td>&#925;</td><td>capital nu</td></tr>
<tr><td>Ξ</td><td>&Xi;</td><td>&#926;</td><td>capital xi</td></tr>
<tr><td>Ο</td><td>&Omicron;</td><td>&#927;</td><td>capital omicron</td></tr>
<tr><td>Π</td><td>&Pi;</td><td>&#928;</td><td>capital pi</td></tr>
<tr><td>Ρ</td><td>&Rho;</td><td>&#929;</td><td>capital rho</td></tr>
<tr><td>Σ</td><td>&Sigma;</td><td>&#931;</td><td>capital sigma</td></tr>
<tr><td>Τ</td><td>&Tau;</td><td>&#932;</td><td>capital tau</td></tr>
<tr><td>Υ</td><td>&Upsilon;</td><td>&#933;</td><td>capital upsilon</td></tr>
<tr><td>Φ</td><td>&Phi;</td><td>&#934;</td><td>capital phi</td></tr>
<tr><td>Χ</td><td>&Chi;</td><td>&#935;</td><td>capital chi</td></tr>
<tr><td>Ψ</td><td>&Psi;</td><td>&#936;</td><td>capital psi</td></tr>
<tr><td>Ω</td><td>&Omega;</td><td>&#937;</td><td>capital omega</td>
</tbody>
</table>
</div>
</body>
</html>