2013-08-17 65 views
0

我有一個contenteditable表,我想檢索編輯的單元格的行,列和標題。我設法讓行,但我無法弄清楚如何獲得標題和列...獲取錶行列和標題JQuery

到目前爲止的代碼:

document.addEventListener('keydown', function (event) { 
var esc = el = event.target; 
    var row = $(el).rowIndex(); 
} 
+0

做出小提琴.. –

回答

1

完整的解決方案: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); 
}); 
+0

@追問如果這有幫助,請求你upvote :) – AdityaSaxena

+0

嗨,對不起,這是非常有益的謝謝!但有一個問題,如果headerText比表上多,會發生什麼? – doovers

+0

你必須對代碼進行一些更改:)基本上從任何地方提取標題文本 – AdityaSaxena

0
<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; 
    } 
} 
} 
} 
} 
+0

我認爲該事件是 「的keydown」 – AdityaSaxena

+0

我認爲這將是很容易改變到另一個事件 – zloctb

0
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 
} 

參考

jquery find

jquery closest

+0

正在獲取:未捕獲TypeError:對象#沒有方法「最接近」 – doovers

+0

我已編輯它的代碼拼寫錯誤對不起 –

+0

我沒有修復它,並修復它,所以這是糾正的代碼,給了我錯誤... – doovers