2012-10-25 127 views
0
<% @level1.each do |row1| %> 
<table id="tbl_main1" name="tbl_main1"> 
    <tr> 
     **<td><a href="javascript:toggle_visibility('tbl1','lnk1');">** 
      **<div align="right" id="lnk1" name="lnk1" width="2%">[+]</div></a></td>**  
    </tr> 
    <tr> 
       **<table id="tbl1" name="tbl1">** 
       <tr><td height="0.5" bgcolor="#EEEEEE"></td></tr> 
        </table> 
    </tr> 
</table> 
<% end %> 

我想在運行時使用Ruby中的循環創建多個表。但是我想動態地改變'link1'和'tbl1'的id,這樣每個表都有一個唯一的'tbl'名字和'lnk1'名字。動態更改HTML表格的ID

+3

那麼你應該讓你的Ruby代碼做到這一點。沒有理由在JavaScript中動態執行此操作。 – Blazemonger

回答

2
<% @level1.each_with_index do |row1, index| %> 
    <table id= <%= "tbl_main#{index}" %> name="tbl_main1"> 

會做你想要什麼,我想。

+0

它仍然不會將紅寶石代碼附加到ID。我認爲這個語法是不正確的。 –

+0

對不起,出於使用erb的習慣,我通常現在使用haml。我認爲編輯應該修復它。 – Edward

+0

它確實改變了表中的id和超鏈接。但是,當它不改變參數時,我把它傳遞給JavaScript函數 –

3

您可以使用row1的某些元素來執行此操作。下面 僞代碼:

<% @level1.each do |row1| %> 
<table id="tbl_main1#{row1.id}" name="tbl_main1"> 
    <tr> 
     **<td><a href="javascript:toggle_visibility('tbl1#{row1.id}','lnk1#{row1.id}');">** 
      **<div align="right" id="lnk1#{row1.id}" name="lnk1" width="2%">[+]</div></a></td>**  
    </tr> 
    <tr> 
       **<table id="tbl1#{row1.id}" name="tbl1">** 
       <tr><td height="0.5" bgcolor="#EEEEEE"></td></tr> 
        </table> 
    </tr> 
</table> 
<% end %> 
+0

我想你錯誤地將'table id =「tbl_main1」''留在你的循環中。 – Blazemonger

+0

@Blazemonger:我不想在tbl_main1中改變任何東西。 tbl_main中有一個超鏈接(+),它擴展了位於tbl_main中的一行中的另一個表(tbl1)。我想動態改變超鏈接的id和tbl1。我可以附加從我的ruby代碼中獲得的'row1'的值。但我不確定將一個ruby變量追加到html id的語法。 –

+0

你不可以(不應該)在單個HTML文檔中有兩個具有相同ID的元素。任何JavaScript或內部錨都會找到第一個,而不會尋找第二個。這些ID在發送到瀏覽器之前應該是唯一的。 – Blazemonger

0

正如評論上面提到的,你應該改變你的代碼來做到這一點。當您只需更改代碼以便立即滿足您的需求時,就沒有理由依賴客戶端腳本或代碼修改。

所以,而是採用

id="lnk1" 

你應該使用

id=someDynamicVariableInYourCode 

此外,如果你能解釋一下爲什麼你需要這一點,你正在努力實現這個東西,這將是更容易理解你想要的東西。

+0

我想學習如何將我的ruby變量附加到html id。我不知道這個的語法。 –

0

確切的語法將是這樣的:

<td><a href="javascript:toggle_visibility('<%= "tbl1#{index}" %>', '<%= "lnk1#{index}" %>');> 
...... 
...... 
div align="right" id=<%= "lnk1#{index}" %> name="lnk1" width="2%">[+]</div></a></td> 
...... 
...... 
<table id=<%= "tbl1#{index}" %>