2015-06-02 34 views
1

我有此Javascript功能,「提醒」一單擊的單元格的內容,無論我在我的HTML陣列上點擊:的Javascript和HTML:得到一個數組行的第一個值

var table = document.getElementById("tableID"); 
if (table != null) { 
    for (var i = 0; i < table.rows.length; i++) { 
     for (var j = 0; j < table.rows[i].cells.length; j++) 
     table.rows[i].cells[j].onclick = function() {tableText(this);}; 
    } 
} 
function tableText(tableCell) {alert(tableCell.innerHTML);} 

我的目標是返回只有點擊行的第一個單元格的值(我試圖管理它,但我是Javascript中的新手...)。提前致謝 !

+0

一種方法是將一個事件監聽器綁定到表中,如下所示:'table.addEventListener('click',function(e){'...'})'並且該回調函數從' e.target'(i。即'e.target.parentNode.parentNode ...'直到你點擊一個''),然後是'tr'返回'.children [0]'。這取決於你是否想使用循環或jQuery或其他庫。 – Xufox

+0

結合使用jQuery與https://api.jquery.com/siblings/和https://api.jquery.com/eq/ – rst

回答

2

你也可以使用jQuery

$("#tableID tbody tr").click(function() { 
    var first_td = $(this).closest("tr") // Finds the closest <tr> 
     .find("td:first") // Finds the first <td> 
     .text(); // Gets its text. 
    console.log("Selected first_td is : ", first_td); 
}); 
1

您可以通過從父元素中獲取第一個子元素來完成。只需使用tableCell.parentNode.firstChild.innerHTML代替tableCell.innerHTML

+0

如果一層'parentNode'不夠用? – Xufox

+0

當然,有人建議單元格已經在行元素中,否則您需要查看父節點,直到它到達節點。 –

0

如果你不想使用jQuery:

http://codepen.io/luarmr/pen/qdrOev

function addEvent(elem, event, fn) { 
    //http://stackoverflow.com/questions/10149963/adding-event-listener-cross-browser 
    if (elem.addEventListener) { 
     elem.addEventListener(event, fn, false); 
    } else { 
     elem.attachEvent("on" + event, function() { 
      // set the this pointer same as addEventListener when fn is called 
      return(fn.call(elem, window.event)); 
     }); 
    } 
} 

var table = document.getElementById('test'); 
addEvent(table, 'click', function(e){ 
    var node = e.srcElement; 
    while(node.tagName.toLowerCase() !== 'tr' && node.tagName.toLowerCase() !== 'body') { 
    node = node.parentNode; 
    } 
    if(node.tagName.toLowerCase() === 'tr') { 
    var td = node.getElementsByTagName('td')[0]; 
    alert(td.innerHTML) 
    } 

}); 
相關問題