2016-12-05 79 views
0

我有一個表,每行都有一個超鏈接。點擊鏈接時,將會調用一個用於聚合數據的URL。我需要將點擊的行/記錄傳遞給此URL,但不確定如何獲取點擊行。HTML/JS - 獲取點擊行

下面是一些示例代碼

<table style="width:100%"> 
    <tr> 
    <th>Firstname</th> 
    <th>Lastname</th> 
    <th>Age</th> 
    </tr> 
    <tr> 
    <td><a href="#" onclick="aggregate()">Jill</td> 
    <td>Smith</td> 
    <td>50</td> 
    </tr> 
    <tr> 
    <td><a href="#" onclick="aggregate()">Eve</a></td> 
    <td>Jackson</td> 
    <td>94</td> 
    </tr> 
</table> 

<script> 
    function aggregate(){ 
     //get clicked row, pass as parameter 
    }; 
</script> 

不要我,而不是需要換行的每一行的形式,做一個表單提交?

感謝

回答

3

通行證this到功能使用t.parentNode.parentNode得到該行並在其上

<td><a href="#" onclick="aggregate(this)">Jill</td> 

<table style="width:100%"> 
 
    <tr> 
 
    <th>Firstname</th> 
 
    <th>Lastname</th> 
 
    <th>Age</th> 
 
    </tr> 
 
    <tr> 
 
    <td><a href="#" onclick="aggregate(this)">Jill</td> 
 
    <td>Smith</td> 
 
    <td>50</td> 
 
    </tr> 
 
    <tr> 
 
    <td><a href="#" onclick="aggregate(this)">Eve</a></td> 
 
    <td>Jackson</td> 
 
    <td>94</td> 
 
    </tr> 
 
</table> 
 

 
<script> 
 
    function aggregate(t){ 
 
     //get clicked row, pass as parameter 
 
     t.parentNode.parentNode.remove(); 
 
    }; 
 
</script>

0

在你的函數執行一些動作傳遞事件和檢查事件的目標。

http://api.jquery.com/event.target/

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
    <script type="text/javascript"> 
     function check_me(event) { 
     event.preventDefault(); 
     alert("Hello World!") 
     } 
    </script> 
    </head> 
    <body> 
    <a onclick="check_me(event);">Click Me!</button> 
    </body> 
</html> 
1

認爲這應該這樣做。抓取被點擊的元素,並遍歷每個父元素,直到標記名匹配並返回匹配的行var。

function aggregate(ev){ 
    var el = ev.currentTarget, 
     row = (function() { 
      while ((el = el.parentElement) && !el.tagName === 'tr'); 
      return el; 
     })(); 

    // Do stuff with "row" .... 
} 
0

你可以把id放到所有表數據中,並使用你的javascript程序訪問<td>

<td id='record-1'><a htef="...?row=record-1">link</a><td> 


<script> 

function tty() { 

    document.getElementById('record-1'). 
    // do what ever you want to do this your row 
}