2010-05-18 21 views
3

我要顯示和隱藏基於一個選擇框的值的錶行,這在Firefox而不是IE:不能切換錶行的顯示在IE與getElementsByName()

<select onChange="javascript: toggle(this.value);"> 
<option value="cat0">category 0</option> 
<option value="cat1">category 1</option> 
</select> 

<table> 
<tr name="cat0"> 
    <td>some stuff v</td> 
    <td>some stuff v</td> 
</tr> 
<tr name="cat0"> 
    <td>some stuff d</td> 
    <td>some stuff d</td> 
</tr> 
<tr name="cat1"> 
    <td>some stuff a</td> 
    <td>some stuff a</td> 
</tr> 
<tr name="cat1"> 
    <td>some stuff b</td> 
    <td>some stuff b</td> 
</tr> 
</table> 
<script type="text/javascript"> 
function toggle(category) 
{ 
    // turn everything off 
    for (var i = 0; i < 2; i++) 
    { 
     var cat = document.getElementsByName('cat' + i); 
     for (var j = 0; j < cat.length; j++) 
      cat[j].style.display = 'none'; 
    } 

    // turn on category chosen 
    var cat = document.getElementsByName(category); 
    for (var i = 0; i < cat.length; i++) 
     cat[i].style.display = ''; 
} 
// start by showing cat0 
toggle('cat0'); 
</script> 
+1

'tr'元素沒有名稱屬性。這是無效的HTML。 – 2010-05-18 21:47:00

回答

6

IE不允許您使用document.getElementsByName方法訪問表格行。如果您使用ID而不是名稱,它將起作用。看到這個頁面的代碼,只是你正在尋找:http://www.toolazy.me.uk/template.php?content=getelementsbyname.xml

+0

呵呵,你每天都會學到一些新東西,但我認爲將'display'屬性設置爲'table-row'也是需要的。 – 2010-05-18 21:50:30

+0

@SeattleLeonard'table-row'不被IE支持 - http://www.w3schools.com/css/pr_class_display.asp – xandercoded 2010-05-18 21:55:04

1

在第二個for循環中使用表格行時,需要將display屬性設置爲table-row

0

有一個IE瀏覽器錯誤您可以使用!簡單地爲每個元素設置名稱和標識(都必須具有相同的值!)。 例如: <tr name="cat0" id="cat0"> 現在getElementsByName也將在IE中工作。

ps。我知道這是個老問題,但我在5分鐘前試圖解決這個問題。所以它可能有助於某人:p