2012-09-21 60 views
1

我試圖改變元素的類,當它從一個值A點擊到值B,然後從值B返回值A時,它被第二次單擊。我在這裏發現了一些代碼,允許我改變一次,但不是第二次。 (請參閱原始here)。按ID切換元素的類

這裏是原代碼:

<script type="text/javascript"> 
    function changeClass() { 
    document.getElementById("MyElement").className += " MyClass"; 
    document.getElementById("MyElement").className = document.getElementById("MyElement").className.replace(/(?:^|\s)MyClass(?!\S)/g, '') 
    } 
</script> 

這裏是我的代碼:

<script type="text/javascript"> 
    function changeClass() { 
    if (document.getElementByID("arrow").className == "arrowdown") { 
     document.getElementById("arrow").className.replace(/(?:^|\s)arrowdown(?!\S)/g, 'arrowup') 
    } 
    elseif(document.getElementByID("arrow").className == "arrowup") { 
     document.getElementById("arrow").className.replace(/(?:^|\s)arrowup(?!\S)/g, 'arrowdown') 
    } 
    } 
</script> 
+0

您標記使用jQuery這個問題?你爲什麼不使用它? – Whymarrh

+0

[jQuery有這個。](http://api.jquery.com/toggleClass/) – Whymarrh

回答

2
$('#arrow').toggleClass('arrowup arrowdown'); 
+0

+1這也是我也會推薦的。 – Whymarrh

+1

'$('#arrow')。toggleClass('arrowdown')。toggleClass('arrowup');' 它工作!和它的jQuery ...謝謝你。 – jmalais

+1

@ $('#arrow').toogleClass('arrowdown arrowup')' – elclanrs

0

爲什麼不直接使用jQuery toggleClass而是連同id selector

$('#arrow').toggleClass('arrowup'); 
    $('#arrow').toggleClass('arrowdown'); 

並節省您自己的調試和幾行代碼!

0

入住這FIDDLE

它更容易使用jQuery ..

$(function() { 
    var i = 0; 
    $('div').on('click', function() { 
     i++; 
     if(i % 2 == 0){ 
      $(this).addClass('arrowup').removeClass('arrowdown'); 
     } 
     else{ 
      $(this).addClass('arrowdown').removeClass('arrowup'); 
     } 
    }); 
});​