2013-03-11 100 views
0

我很難根據select標記中的選定項目更改元素的類別。這是我的代碼:使用javascript更改元素的類別

<table> 
    <tr> 
     <select onchange="wow(this.value)"> 
      <option value="a">a</option> 
      <option value="b">b</option>    
     </select> 
    </tr>    
    <tr id="x" class="show"> 
     x 
    </tr> 
</table> 

<script> 
function wow(value){ 
    switch(value){ 
     case "a": document.getElementById("x").className = "show"; break;  
     case "b": document.getElementById("x").className = "hide"; break; 
    } 
} 
</script> 

<style> 
.show{ 
    display:inline-block; 
} 

.hide{ 
    display:none; 
} 
</style> 

我這裏看不到任何問題。我也試過setAttribute("class", "show"),但不起作用。

+0

@GlennFerrieLive這是一個jQuery的例子。 – Hamish 2013-03-11 03:53:03

+1

你錯過了交換機的'case'部分。 – j08691 2013-03-11 03:54:41

回答

6

你有一個<td>X

http://jsfiddle.net/DerekL/CVxP7/

<tr>...<td id="x" class="show">x</td></tr> 

你也需要在前面加case"a":

case "a": 
    document.getElementById("x").setAttribute("class", "show"); 
    break; 

PS:有一個更高效的w唉,實現你正試圖在這裏做的事:

http://jsfiddle.net/DerekL/CVxP7/2/

function wow(value) { 
    var index = { 
     a: "show", 
     b: "hide" 
    }; 
    document.getElementById("x").setAttribute("class", index[value]); 
} 

現在你不需要輸入document.getElementById("x").setAttribute("class"...兩次。

+0

它的工作原理,謝謝,但爲什麼我不能把課程放在? – shankshera 2013-03-11 04:03:37

+0

@shankshera - 技術上你可以,但這是一個很好的習慣[用''或'​​'](https://developer.mozilla.org/en-US/docs/HTML/Element/table #例子)。 – 2013-03-11 04:06:36

0

試試這個

switch(value){ 
    case "a": document.getElementById("x").setAttribute("class", show); break;   
    case "b": document.getElementById("x").setAttribute("class", hide); break; 
} 
+0

'show'沒有被定義。 – 2013-03-11 04:01:28

+0

show是classname。 – 2013-03-11 04:02:44