我按照1和0的顺序将页面背景从白色更改为黑色。此时我设法使其工作,黑色和白色背景以相同的延迟变化:
var syncinterval = setInterval(function(){
bytes = "10101010101010101010101010101010101010101010101010101010101010101";
bit = bytes[i];
output_bit(bit);
i += 1;
if (i > bytes.length) {
clearInterval(syncinterval);
i = 0;
for (i=0; i < input.length; i++) {
tbits = input[i].charCodeAt(0).toString(2);
while (tbits.length < 8) tbits = '0' + tbits;
bytes += tbits;
}
console.log(bytes);
}
}, sync_speed);
完整的工作演示:http://jsfiddle.net/kn48Z/
如何修改功能,使白色背景为sync_speed秒,黑色背景为其他任何值?
答案 0 :(得分:0)
如果我理解您要执行的操作,请尝试将代码放入单独的函数中并使用setTimeout。这将使您更好地控制您要完成的任务。
我修改了你的代码。我检查是否位是1(我假设是白色),如果是,它将在sync_speed秒内运行backgroundOrSomething。如果不是,它将在otherTime中运行backgroundOrSomething。我将otherTime设置为1秒,只是为了咯咯笑。
function backgroundOrSomething (){
bytes = "10101010101010101010101010101010101010101010101010101010101010101";
bit = bytes[i];
output_bit(bit);
i += 1;
if(i > bytes.length) {
i = 0;
for (i=0; i < input.length; i++) {
tbits = input[i].charCodeAt(0).toString(2);
while (tbits.length < 8) tbits = '0' + tbits;
bytes += tbits;
}
console.log(bytes);
}
otherTime = 1000;
if (bit == 1)
setTimeout(backgroundOrSomething, sync_speed);
else
setTimeout(backgroundOrSomething, otherTime);
}
setTimeout(backgroundOrSomething, sync_speed);
代码底部的最后一个setTimeout将是第一个执行backgroundOrSomething的。(/ p>
答案 1 :(得分:0)
如上所述,您需要使用如下设置间隔:
var bit = 0;
var syncInterval = setInterval(function() {
document.body.style.backgroundColor = bit == 0 ? 'black' : 'white';
bit = 1;
}, 3000);
var stopInterval = setTimeout(function() {
clearInterval(syncInterval);
}, 50000);
在此处http://jsfiddle.net/kn48Z/4/。注意减慢背景开关,以便它适合。