使用onclick调用函数,并在该函数中使用onclick调用另一个函数

时间:2014-07-02 02:59:08

标签: javascript css 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;
}

我想在每次用户点击按钮时更改按钮中文本的颜色。那么问题是什么?当我再次点击它时,它只会变为红色,但不会变为黄色。

3 个答案:

答案 0 :(得分: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和HTML中的任何内容。的CSS。

答案 1 :(得分: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"; 
}

答案 2 :(得分:0)

var first = document.getElementById("first"), counter = 0;
first.addEventListener('click', function () {
    first.className = (counter % 2) ?  'disc' : 'disco';
    counter +=1;
});

http://jsfiddle.net/fNW23/

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