2012-09-12 89 views
0

我有一個表格,當一個鏈接添加到任何單元格時,它會使整行可點擊。我想要做的是將此腳本添加到頁面上的多個表中。問題是腳本只能使用一個表,因爲它只能用於id而不能用於class css。我如何添加多個表ID?函數的多個參數

 window.onload = function(){ 
     ConvertRowsToLinks("results-table"); //My table id 
     // ConvertRowToLinks("results-table", "results-table2"); 
     // I would like to add results-table2, results-table3 etc... 

    } 

    function ConvertRowsToLinks(xTableId){ 

    var rows = document.getElementById(xTableId).getElementsByTagName("tr"); 

    for(i=0;i<rows.length;i++){ 
     var link = rows[i].getElementsByTagName("a") 
     if(link.length == 1){ 
     rows[i].onclick = new Function("document.location.href='" + link[0].href + "'"); 
     rows[i].onmouseover = new Function("this.className='highlight'"); 
     rows[i].onmouseout = new Function("this.className=''"); 
     } 
    } 


    ConvertSideRowsToLinks("sidebar-table"); 
    } 

    function ConvertSideRowsToLinks(xTableId){ 

    var rows = document.getElementById(xTableId).getElementsByTagName("tr"); 

    for(i=0;i<rows.length;i++){ 
     var link = rows[i].getElementsByTagName("a") 
     if(link.length == 1){ 
     rows[i].onclick = new Function("document.location.href='" + link[0].href + "'"); 
     rows[i].onmouseover = new Function("this.className='highlight'"); 
     rows[i].onmouseout = new Function("this.className=''"); 
     } 
    } 

    } 

回答

0

您也可以切片參數這條路你可以通過儘可能多的ID,你不需要創建數組顯示:

function ConvertSideRowsToLinks() 
    { 
    var ids = Array.prototype.slice.call(arguments) 
    for (var key in ids) 
    { 
     var table = document.getElementById(ids[key]) 
     var rows =table.getElementsByTagName("tr"); 

     for(i=0;i<rows.length;i++){ 
      var link = rows[i].getElementsByTagName("a") 
      if(link.length == 1){ 
      rows[i].onclick = new Function("document.location.href='" + link[0].href + "'"); 
      rows[i].onmouseover = new Function("this.className='highlight'"); 
      rows[i].onmouseout = new Function("this.className=''"); 
     } 
     } 
    } 
    } 
+0

真棒,謝謝!這對我來說是最好的解決方案。 – Far

0

使用類如:

//Html code 
<a class="test" name="Name 1"></a> 
<a class="test" name="Name 2"></a> 
<a class="test" name="Name 3"></a> 

// access like 
var elements = document.getElementsByClassName("test"); 
0

您可以傳遞一個數組和遍歷它:

function ConvertTablesRowsToLinks(tableIds){ 
    tableIds.forEach(ConvertRowsToLinks); 

}

function ConvertRowsToLinks(xTableId){ 
    var i; // variable i should be declared otherwise is leaking to global namespace. 
    var rows = document.getElementById(xTableId).getElementsByTagName("tr"); 
    for(i=0;i<rows.length;i++){ 
     var link = rows[i].getElementsByTagName("a") 
     if(link.length == 1){ 
     rows[i].onclick = new Function("document.location.href='" + link[0].href + "'"); 
     rows[i].onmouseover = new Function("this.className='highlight'"); 
     rows[i].onmouseout = new Function("this.className=''"); 
    } 
    }