2014-07-02 109 views
0

我想使用onclick調用一個函數,但是這個函數已經在通過onclick調用的另一個函數內。使用onclick調用函數,並在該函數內調用另一個函數使用onclick

我其實想繼續這樣做約6-7次。

的代碼可能會減少混亂幫助:

的HTML + JS:

{ 
<body> 
<script type="text/javascript"> 

function abc() 
{ 
    document.getElementById("first").className='disc'; 
    document.getElementById("first").onClick="def();"; 
} 
function def() 
{ 
    document.getElementById("first").className='disco'; 
} 

</script> 
<input type="button" value="Change Color of this text" id="first" class="" onclick="abc();"> 
</body> 

} 

的CSS:

.disc 
{ 
    color: red; 
} 
.disco 
{ 
    color: yellow; 
} 

我想更改文本的顏色每次用戶點擊它時按鈕。那麼問題是什麼?它只是變成紅色,但當我再次點擊它時不會變成黃色。

+0

你在哪看到代碼會將它改回黃色?我沒有看到任何。 –

+0

爲什麼不直接在你的css中使用懸停? –

+0

它不會將其改回黃色。 它首先是黑色的,當第一次點擊時,它會變成紅色,當第二次點擊時,它應該變成黃色。這就是我想要的 – Neeraj

回答

0

我想這應該根據評論您的要求爲你工作: -

的Javascript

function abc(){ 
    if(document.getElementById("first").className == "" || document.getElementById("first").className == "disco"){ 
     document.getElementById("first").className = "disc"; 
    } 
    else if(document.getElementById("first").className=="disc"){ 
     document.getElementById("first").className="disco"; 
    }  
} 

你不需要更改HTML CSS &什麼。

0

而不是從abc()更改函數def(),我不知道你可以做這樣的事情。爲什麼你不只是使用1函數,並檢查當前className,如下面的代碼:

function abc() 
{ 
    if(document.getElementById("first").className == "disco" || document.getElementById("first").className == "") //change from red to yellow 
     document.getElementById("first").className="disc"; 
    else //change from yellow to red 
     document.getElementById("first").className="disco"; 
} 
0
var first = document.getElementById("first"), counter = 0; 
first.addEventListener('click', function() { 
    first.className = (counter % 2) ? 'disc' : 'disco'; 
    counter +=1; 
}); 

http://jsfiddle.net/fNW23/

固定碼和更可靠的解決方案。