我有一個contenteditable表,我想檢索編輯的單元格的行,列和標題。我設法讓行,但我無法弄清楚如何獲得標題和列...獲取錶行列和標題JQuery
到目前爲止的代碼:
document.addEventListener('keydown', function (event) {
var esc = el = event.target;
var row = $(el).rowIndex();
}
我有一個contenteditable表,我想檢索編輯的單元格的行,列和標題。我設法讓行,但我無法弄清楚如何獲得標題和列...獲取錶行列和標題JQuery
到目前爲止的代碼:
document.addEventListener('keydown', function (event) {
var esc = el = event.target;
var row = $(el).rowIndex();
}
完整的解決方案:http://jsfiddle.net/pLpKm/
HTML:
<div class"info">
<strong>Column number: </strong><span class="column"></span>
<br/>
<strong>Row number: </strong><span class="row"></span>
<br/>
<strong>Header text: </strong><span class="header"></span>
<br/>
</div>
<table cellpadding="0" cellspacing="0" border="1" style="width:200px; height:400px;">
<tr>
<th>
Heading 1
</th>
<th>
Heading 2
</th>
<th>
Heading 3
</th>
</tr>
<tr>
<td contentEditable>
</td>
<td contentEditable>
</td>
<td contentEditable>
</td>
</tr>
<tr>
<td contentEditable>
</td>
<td contentEditable>
</td>
<td contentEditable>
</td>
</tr>
<tr>
<td contentEditable>
</td>
<td contentEditable>
</td>
<td contentEditable>
</td>
</tr>
<tr>
<td contentEditable>
</td>
<td contentEditable>
</td>
<td contentEditable>
</td>
</tr>
</table>
JS:
$('table').on('keydown', function(e){
var columnNumber, rowNumber, headerText;
columnNumber = $(e.target).index() + 1;
rowNumber = $(e.target).parent().index() + 1;
headerText = $('th:nth-child(' + columnNumber + ')').text();
$('.column').html(columnNumber);
$('.row').html(rowNumber);
$('.header').html(headerText);
});
@追問如果這有幫助,請求你upvote :) – AdityaSaxena
嗨,對不起,這是非常有益的謝謝!但有一個問題,如果headerText比表上多,會發生什麼? – doovers
你必須對代碼進行一些更改:)基本上從任何地方提取標題文本 – AdityaSaxena
<table>
<tr>
<td>name1</td><td>name2</td><td>name3</td>
</tr>
<tr>
<td>name2.1</td><td>name2.2</td><td>name2.3</td>
</tr>
<script>
var tds=document.getElementsByTagName('table')[0].getElementsByTagName('td');
for(var i=0;i<tds.length;i++){
tds[i].onclick=function(){
//console.log(this.parentNode.tagName)//TR
//console.log(this.parentNode);
var tr=document.getElementsByTagName('table')[0].getElementsByTagName('tr');
for(var j=0;j<tr.length;j++){
if(tr[j]==this.parentNode){
console.log('row:'+j);//index row
var arrtd=tr[j].getElementsByTagName('td')
for(var m=0;m<arrtd.length;m++){
if(this==arrtd[m])
console.log('col:'+m);//index col
//break;
}
}
}
}
}
我認爲該事件是 「的keydown」 – AdityaSaxena
我認爲這將是很容易改變到另一個事件 – zloctb
document.addEventListener('keydown', function (event) {
var esc = el = event.target;
esc.closest("tr");//get tr
esc.closest("td"); //get td
esc.closest("table").find("thead");//for thead header
}
參考
做出小提琴.. –