我做了一个闪光灯,怎么能让它停下来?

时间:2011-07-05 19:17:32

标签: javascript

我制作了这个频闪灯功能,并且频闪功能正常工作。我一直在尝试添加重置网站和停止频闪的功能。我尝试了这段代码,但它没有用。我一直试图调试这一段时间,但想不出什么。如果您对如何完成这项工作有任何想法,我们将不胜感激。

var text1=document.body.style.backgroundColor;
var text2=document.body.style.color;
var boolean_value1=true;
var boolean_value2=true;
function strobe()
{
 if (boolean_value2)
 {
  document.body.style.backgroundColor = boolean_value1 ? 'black' : 'white';
  document.body.style.color = boolean_value1 ? 'white' : 'black';
  boolean_value1=!boolean_value1;
  setTimeout(strobe, 70); //in milliseconds
 }
 else
 {
  document.body.style.backgroundColor=text1;
  document.body.style.color=text2;
  alert("The else statement was executed...boolean_value2 evaluates to false");
 }
}

function stop_strobe()
{
 boolean_value2=false;
}

我认为截至目前,主要问题是boolean_value2未评估为true。我无法理解为什么。这不是一个全局变量吗?是的,我一直在调用这些函数,而不仅仅是声明它们。但那是我所知道的另一个文件....这一个:

<html>

<head>
 <title>Blag!</title>
 <script type="text/javascript" src="/JAVASCRIPT/flash.js"></script>
 <script type="text/javascript" src="/JAVASCRIPT/konami.js"></script>
</head>



<body>
    <script type="text/javascript"> 
    // <![CDATA[

        var konami = new Konami();
        konami.pattern = "38384040373937396665";
        var counter=0;
        konami.code = function() {
            if ((counter%2)==0)
            {
             alert("You have entered the Konami code...enter it again to make it stop...")
             strobe();
             counter=counter+1;
            }
            else
            {
             stop_strobe();
            }
        };
        konami.load();

    // ]]>
    </script> 

</body>

1 个答案:

答案 0 :(得分:1)

当我测试你的代码时,它运行得很好。

演示:http://jsfiddle.net/R43ky/


您可以使用setInterval方法代替setTimeout。这样您就不必从回调方法设置新的超时,并且您可以轻松地将其停止:

var text1 = document.body.style.backgroundColor;
var text2 = document.body.style.color;
var boolean_value1 = true;
var interval;

function strobe() {
  document.body.style.backgroundColor = boolean_value1 ? 'black' : 'white';
  document.body.style.color = boolean_value1 ? 'white' : 'black';
  boolean_value1 = !boolean_value1;
}

function start_strobe() {
  interval = window.setInterval(strobe, 70); //in milliseconds
}

function stop_strobe() {
  window.clearInterval(interval);
  document.body.style.backgroundColor = text1;
  document.body.style.color = text2;
}