2017-01-25 13 views
-2

매초마다 헤더의 색상을 변경하는 스크립트를 만들려고합니다. HTML 요소를 호출 할 때마다 임의의 색상으로 스타일을 지정하는 함수를 만들었고 setInterval(); 작동하지 않습니다!자바 스크립트 setInterval(); 작동하지 않습니까?

function randomColor(elementId) { 
var colors = ["red","green","blue","purple","lightblue","cyan","yellow","brown","pink","grey"]; 
var randomNumber = Math.floor(Math.random() * 10) + 1; 
document.getElementById(elementId).style.color = colors[randomNumber]; 
} 

setInterval(randomColor("Header"), 1000); 

누군가 도움을 줄 수 있습니까? 감사!

참고 : 페이지를 새로 고침하면 색상이 한 번만 변경됩니다.

+0

참조 http://stackoverflow.com/q/457826/256305 –

답변

3

그 이유는 사용자가 randomColor을 호출하고 그 결과가 setInterval으로 전달 되었기 때문입니다.

잘 포장 된 버전을 전달할 수 있어야합니다.

setInterval(function() { randomColor("Header"); }, 1000); 
1

이 같이하여 setInterval에 arugment 같은 기능을 보내야합니다 :

setInterval(function(){randomColor("Header")}, 1000); 
2

setInterval 기능은 입력으로 기능을한다. 귀하의 예에서는 randomColor("Header")을 실행하고 그 결과를 setTimer 함수로 보냅니다.

setInterval(function() { randomColor("Header") }, 1000);