更改颜色代码不起作用

时间:2016-07-03 11:28:20

标签: javascript html

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秒更改一次背景颜色。 但是当我把鼠标放在上面时,它只会改变颜色。

问题是什么?

5 个答案:

答案 0 :(得分:6)

您正在调用该函数,而不是在setInterval调用中引用该函数。

将其更改为

setInterval(color, 1000);

FIDDLE

当你将一个括号添加到一个函数中时,它被调用,并且返回的结果总是undefined,除非被调用函数中定义了其他内容,否则将返回。

您所做的与

相同
var fn = color(); // returns undefined

setInterval(fn, 1000); // undefined, 1000

答案 1 :(得分:0)

这是一个工作片段。 我改变的是

  1. onmousehover已替换为oneclick()(因为它表示单击按钮)
  2. setInterval函数调用中,color不需要括号
  3. 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>

小提琴:https://jsfiddle.net/9cxw9jL0/

答案 3 :(得分:0)

我更改了一些代码,你可以在plunker中找到。

<https://plnkr.co/edit/sKpJQqRohICD63AQjgTx?p=preview>

答案 4 :(得分:-1)

以下是您的问题的解决方案

&#13;
&#13;
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;
&#13;
&#13;