2014-07-02 72 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/

固定码和更可靠的解决方案。