2010-12-13 34 views
2

我有一個使用PHP從Sql數據庫創建的表,該表使用以下代碼示例成功顯示錶信息 。從使用MySql創建的表中獲取ROW ID以與OnClick函數一起使用

<table class="mytable loottable" id="guildmembers"> 
<?php 

    $query = mysql_query("SELECT $member.charname, $member.char_lvl, $trskill.skill_desc, ..... 

    if (mysql_num_rows($query) > 0) { 

    while (false !== ($row = mysql_fetch_assoc($query))) { 
     echo '<tr id="'.$row['charname'].'">'; <-- setting row id here 
     echo '<td class="lootrow" id="memth1">'.$row['charname'].'</td>'; 
     echo '<td class="lootrow" id="memth2">'.$row['rank_desc'].'</td>'; 
     echo '<td class="lootrow" id="memth3">'.$row['class_name'].'</td>'; 
     echo '<td class="lootrow" id="memth4">'.$row['char_lvl'].'</td>'; 
     echo"</tr>\n"; 
    } 
    mysql_free_result($query); 
    } 
?> 
</table> 

頁面源的示例,其中我已驗證每個錶行都被分配了正確的ID。

<tr id="Calysta"><td class="lootrow" id="memth1">Calysta</td><td class="lootrow" id="memth2">Guild Leader</td><td class="lootrow" id="memth3">Inquisitor</td></tr> 

<tr id="Rynanx"><td class="lootrow" id="memth1">Rynanx</td><td class="lootrow" id="memth2">Guild Leader</td><td class="lootrow" id="memth3">Mystic</td> 

我將每個表的行ID設置爲始終唯一的第一個字段。然後我試着在下面的函數中使用這個 ID將用戶重定向到一個配置文件頁面,當他們點擊表格中的一行時。

<script type="text/javascript"> 
     $(document).ready(function() { 
      $("table.mytable").each(function() { 
       table = $(this); 
       if ($(table).attr("id")=="guildmembers") { 
        $(this).click(function(){ 
         window.location.href = "http://eq2players.com"+ 
          "/Kithicor/" + $(this).attr("id") + "/"; 
        }); 
       } 
      }) 
     }); 
    </script> 

如果單擊 第一行應在與下面的地址,例如瀏覽器中打開一個新的頁面:「http://everquest2.com/Kithicor/Calysta/」

而是沒有問題點擊正在創建的網址的網址 是「http://everquest2.com/Kithicor/guildmembers/」

這是表ID。而不是被點擊的行的ID。我已嘗試過各種解決方案 ,並且無法計算如何獲取此點擊函數中的行ID。任何幫助,這將非常讚賞。謝謝。

+0

您正在複製'id',檢查像'id =「memth1/2/3/4」'這樣的東西不應該重複,ids應該*唯一。 – Jakub 2010-12-13 20:16:15

回答

1

在這裏你走了,只是做了這個快速,改變了一些東西,請注意使用重複ID的BAD,你不應該。你也過於複雜你的Javascript:

HTML實例:

<table class="mytable loottable" id="guildmembers"> 
<tr class="linkRow" id="test1"> 
    <td>test1</td> 
</tr> 
<tr class="linkRow" id="test2"> 
    <td>test2</td> 
</tr> 
<tr class="linkRow" id="test3"> 
    <td>test3</td> 
</tr>  
</table> 

的jQuery:

$(document).ready(function() { 
    $(".linkRow").each(function() { 
     id = $(this).attr("id") 
     $(this).click(function(){ 
     window.location.href = "http://eq2players.com"+ 
        "/Kithicor/" + id + "/"; 
     }); 
    }); 
}); 

的jsfiddle鏈接:

http://jsfiddle.net/TJBX5/

+0

這很好,我做了一些像上面建議的改變,現在我得到了行ID,但不幸的是,我只獲取表中最後一行的ID,無論我點擊哪一行,所以我需要做更多對此進行研究。 – Matt 2010-12-14 13:31:55

0

您正在桌面上安裝您的點擊處理程序。因此,當您撥打$(this).attr("id")時,您需要提供表格的ID。您需要在表中的每一行上安裝點擊處理程序。

+0

這應該是一個評論,而不是**答案** – Jakub 2010-12-14 00:45:26

+0

我現在看到了,謝謝。我是一個Unix系統上的Cobol程序員,並且正在嘗試從閱讀手冊中學習一些基於Web的東西,所以我現在是這類東西的真正新手。 – Matt 2010-12-14 13:36:38

相關問題