Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何让此代码每隔单击一次就更改背景色?_Javascript_Jquery - Fatal编程技术网

Javascript 如何让此代码每隔单击一次就更改背景色?

Javascript 如何让此代码每隔单击一次就更改背景色?,javascript,jquery,Javascript,Jquery,提到的div标记是我添加到HTML文本中的唯一代码。如果可能,请在jquery中提供您的答案。 $(文档).ready(函数(){ $(“div”)。单击(funcOne(),funcTwo() 试试这个: <div id="co"> <!-- no onclick method needed --> <script> $(document).ready(function() { $("#co").click(function() {

提到的div标记是我添加到HTML文本中的唯一代码。如果可能,请在jquery中提供您的答案。 $(文档).ready(函数(){ $(“div”)。单击(funcOne(),funcTwo()

试试这个:

<div id="co"> <!-- no onclick method needed -->
<script>
$(document).ready(function() {
    $("#co").click(function() {
        $("body").css("background-color","blue"); //edit, body must be in quotes!
    });
});
</script>

$(文档).ready(函数(){
$(“#co”)。单击(函数(){
$(“body”).css(“背景色”,“蓝色”);//编辑,body必须在引号中!
});
});

你见过explorer事件监听器吗?我认为问题在于,toggle不像clic事件那样用于调用,它用于显示或隐藏dom中的元素。

在较新的jQuery版本中
。toggle()
不能再用于切换两个回调函数。它被用作一个简单的
.show()/.hide()
速记

使用Array.reverse()切换两种颜色:


有关切换两个功能的详细信息:

回答“每隔单击一次”的问题

var divCount = 0;
$('div').click(function() {
    divCount++;
    if( divCount % 2 == 0) {
        $(this).css('background-color', $(this).css('background-color') == 'blue' ? 'red' : 'blue' );
    }
});

我不能给你JQuery,但我可以给你一个普通的解决方案:

var div = document.getElementsByTagName('div');

div.addEventListener('click', funcOne);

function funcOne(){
   div.style.backgroundColor = "blue";
   div.removeEventListener('click', funcOne);
   div.addEventListener('click', funcTwo);
}

function funcTwo(){
   div.style.backgroundColor = "red";
   div.removeEventListener('click', funcTwo);
   div.addEventListener('click', funcOne);
}
这个方法以前对我很有效,toggle()方法(我尝试过几次)有点失败。因此,将上面的方法转换为JQuery,然后按顺序运行两个(或更多)click()


如果希望仅在某些单击时更改颜色,请将事件侦听器添加/删除(在funcOne()中)放置在每次发生funcOne时都会迭代的计数器内。将计数器附加到变量,并且当计数器=N(其中N=单击中每个间隔的大小)时,更改事件侦听器并重置计数器。

“纯jQuery”-现在这是一个短语。顺便说一句,因为事件处理已被弃用。由于这个问题,我失去了3天提问的权利。有人能告诉我如何更好地表达这一点,以便我不会再次被禁止吗?谢谢大家,你需要这样做更具描述性,并显示出自己在研究和解决问题上的更多努力。这个问题的答案可以通过阅读文档找到,而且很容易研究。你选择的答案的质量反映了这一点;它只是代码,不需要特别的研究或解释。如果你只是花更多的时间研究这些类型的问题(JavaScript、jQuery)对您来说是微不足道的。
var colors = ["blue", "red"];
$("div").click(function() {
    $(this).css({ background : colors.reverse()[0] });
});
var divCount = 0;
$('div').click(function() {
    divCount++;
    if( divCount % 2 == 0) {
        $(this).css('background-color', $(this).css('background-color') == 'blue' ? 'red' : 'blue' );
    }
});
var div = document.getElementsByTagName('div');

div.addEventListener('click', funcOne);

function funcOne(){
   div.style.backgroundColor = "blue";
   div.removeEventListener('click', funcOne);
   div.addEventListener('click', funcTwo);
}

function funcTwo(){
   div.style.backgroundColor = "red";
   div.removeEventListener('click', funcTwo);
   div.addEventListener('click', funcOne);
}