2010-12-07 43 views
0

我有一個JavaScript函數誰的任務是顯示一個表 的隱藏的行javascript函數:隱藏和顯示錶row..onclick只有一行的作品,然後停止出剩下的

功能布拉布拉(計數){計數++; var id =「ph」+ count; document.getElementById(id).style.display =「」; }

然後我有1號排的按鈕在同一文檔中的表格觸發onclick事件:

<script to declare globale variable count=1/> 
<table> 
<tr id="ph1"><td>haha:<button onClick="blabla(count)"><button></td></tr> 
<tr id="ph2" style="display:none"><td>hoho</td></tr> 
<tr id="ph3" style="display:none"><td>hihi</td></tr> 
</table> 

當加載頁面時,我點擊一次按鈕:第二行顯示..但是當我第二次點擊它時......第三行不顯示... 這是爲什麼? 任何人都可以幫助我?

+0

你能表現出與onclick處理程序和TR元素以及HTML部分?此外,請確保使用問題窗口頂部的「代碼示例」按鈕(101 010)以可讀的方式佈置代碼。 – 2010-12-07 09:33:07

+0

\t ​​哈哈:​​​​ \t ​​HOHO:​​ \t ​​日冰:​​
welou 2010-12-07 09:34:14

回答

0

這是因爲變量「count」在函數調用結束後立即消失,所以最終每次都顯示相同的錶行。你可以嘗試變量移動到全球範圍:

var count = 1; 
function blabla() { 
    count++; 
    var id="ph"+count; 
    document.getElementById(id).style.display=""; 
} 

根據你的HTML,你可以再改這樣的:

<table> 
    <tr id="ph1"> 
     <td>haha:</td> 
     <td><input type="file" id="w"/></td> 
     <td><img src="Style/Images/plus.jpg" onClick="blabla()"/></td> 
    </tr> 
    <tr id="ph2" style="display:none"> 
     <td>hoho:</td> 
     <td><input type="file" id="1"/></td> 
    </tr> 
    <tr id="ph3" style="display:none"> 
     <td>hihi:</td> 
     <td><input type="file" id="2"/></td> 
    </tr> 
</table> 

所以,僅僅從函數調用刪除計數。

但是,當你持續按下按鈕時(當用戶以「ph」開頭的id時,你會遇到一個錯誤)。如果你不希望這樣的事情發生,做這樣的事情:

var count = 2; 
function blabla() { 
    var element = document.getElementById("ph" + count); 
    if (!element) { 
     alert('No more rows!'); 
    } else { 
     element.style.display = ""; 
     count++; 
    } 
} 

最後,這可能是更有力使用的東西像jQuery做,但我儘量保持接近你原來的代碼越好。

0
function blabla(count) 
{ 
    count++; // why using this code? remove this code. 
    var id="ph"+count; document.getElementById(id).style.display=""; 
} 

嘗試沒有count++代碼。

對於全球數使用:

var count = 0; 
function blabla() 
{ 
    var id="ph"+count; document.getElementById(id).style.display=""; 
    count++; // this will provide you to show next row for another click. 
} 
相關問題