我制作了这个频闪灯功能,并且频闪功能正常工作。我一直在尝试添加重置网站和停止频闪的功能。我尝试了这段代码,但它没有用。我一直试图调试这一段时间,但想不出什么。如果您对如何完成这项工作有任何想法,我们将不胜感激。
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>
答案 0 :(得分:1)
当我测试你的代码时,它运行得很好。
您可以使用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;
}