function color(){
var color = "#"
for(var i = 0; i<6; i++){
color += Math.floor((Math.random()*16)).toString(16);
};
document.getElementsByTagName('body')[0].style.backgroundColor = color;
}
function change(){
setInterval(color(), 1000);
}
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<button id='button' onmouseover="change();" style='width:50px; height:50px; margin-left:auto;'>click</button>
<script type="text/javascript" src='js.js'></script>
</body>
</html>
我尝试自动更改后台编码。
我想每1秒更改一次背景颜色。 但是当我把鼠标放在上面时,它只会改变颜色。
问题是什么?
答案 0 :(得分:6)
您正在调用该函数,而不是在setInterval
调用中引用该函数。
将其更改为
setInterval(color, 1000);
当你将一个括号添加到一个函数中时,它被调用,并且返回的结果总是undefined
,除非被调用函数中定义了其他内容,否则将返回。
您所做的与
相同var fn = color(); // returns undefined
setInterval(fn, 1000); // undefined, 1000
答案 1 :(得分:0)
这是一个工作片段。 我改变的是
onmousehover
已替换为oneclick()
(因为它表示单击按钮)setInterval
函数调用中,color
不需要括号
function color(){
var color = "#"
for(var i = 0; i<6; i++){
color += Math.floor((Math.random()*16)).toString(16);
};
document.getElementsByTagName('body')[0].style.backgroundColor = color;
}
function change(){
setInterval(color, 1000);
}
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<button id='button' onclick="change();" style='width:50px; height:50px; margin-left:auto;'>click</button>
<script type="text/javascript" src='js.js'></script>
</body>
</html>
</html>
答案 2 :(得分:0)
这是一个工作示例
<body>
<button id='button' onmouseover="change()" style='width:50px; height:50px; margin-left:auto;'>click</button>
</body>
<script>
function color() {
var color = "#"
for (var i = 0; i < 6; i++) {
color += Math.floor((Math.random() * 16)).toString(16);
};
document.getElementsByTagName('body')[0].style.backgroundColor = color;
}
function change() {
setInterval(color(), 1000);
}
</script>
答案 3 :(得分:0)
我更改了一些代码,你可以在plunker中找到。
<https://plnkr.co/edit/sKpJQqRohICD63AQjgTx?p=preview>
答案 4 :(得分:-1)
以下是您的问题的解决方案
function colorchanger(){
setInterval(function(){
var letters = '0123456789ABCDEF'.split('');
var color = '#';
for (var i = 0; i < 6; i++ ) {
color += letters[Math.floor(Math.random() * 16)];
}
document.body.style.backgroundColor = color;
},300);
}
&#13;
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title></title>
<link rel="stylesheet" href="">
</head>
<body>
<button onclick="colorchanger();" >Change Color</button>
</body>
</html>
&#13;