2014-02-25 5 views
0

안녕하세요 여러분, 사이트 및 자바 스크립트에 익숙하지 않습니다. 사용자가 버튼을 클릭하기 전에 몇 번이나 배경색이 변경되었는지 카운터를 추가하려고합니다. 버튼을 클릭하기 전에 색상이 변경된 시간이 몇 번입니까? 나는 카운터를 많이 보았지만 내가 원하는 것을 찾지 못했습니다. 코드가 아래에 있습니다. 어떤 제안이라도 좋을 것입니다.JavaScript 함수에서 카운터 설정?

감사합니다!

P. 좀 더 내가 할 필요가있다 :

• 사용자가 클릭하기 전에 표시됩니다 얼마나 많은 색상 카운트 "나는이 색을 좋아하는 내 코드는 내가

가 UPDATE 파이어 폭스를 사용하고 IE에서 작동하지 않습니다 " o 전역 범위로 카운터 만들기 (함수 외부) o changeColor() 함수에서 카운터를 증가 시키십시오. o 사용자가이 색상 버튼을 클릭하면 로컬 저장소를 사용하여 카운트를 저장합니다. •에서 읽기 localStorage o 문서가 시작되면 위 단계에서 저장 한 개수에 액세스하십시오. 데이터가 없으면 웹 사이트를 처음 보는 것이므로 카운트를 표시 할 필요가 없습니다.

나는 시도

<script type="text/javascript"> 

      var count = 0; 

      var interval; 



      function getRandom(num){ 

       return Math.floor(Math.random()*num); 



      } 



      function changeColor(){ 

       count ++; 



       var num1 = getRandom(255); 

       var num2 = getRandom(255); 

       var num3 = getRandom(255); 

       var col = "rgb("+num1+","+num2+","+num3+")"; 

       var div = document.getElementById('myDiv'); 

       div.style.background = col; 



      } 



      function stop() { 

       clearInterval(interval); 

       alert('The background color has changed ' + count + ' times before you clicked me!'); 

      } 



      interval = setInterval("changeColor()", 2000); 



</script> 





<style type="text/css"> 

.Div { 

    position:absolute; 

    width: 800px; 

    height: 100px; 

    z-index: 15; 

    top: 50%; 

    left: 15%; 

    background: red; 

} 

</style> 



</head> 



<body onLoad="setInterval()"> 





<div id="myDiv" class="Div"> 

<input type="button" onClick="stop()", value="I like this color" align="absmiddle"> 

</div> 

</body> 

</html> 
+0

- 1 ' . 모든 값을 원한다면 256을 넘겨 주거나'Math.random() * ++ num)'을 사용해야합니다. – RobG

+0

일반적으로 ** 새로운 질문을 추가하려면 ** 귀하의 게시물 **을 업데이트하면 안됩니다 **. 원래 질문에 답이 나온 경우 ** 해당 답변을 수락 한 것으로 표시하십시오 ** (그리고 upvote에 충분한 담당자가있을 때도 고려하십시오). 그렇게하면 ** 새로운 질문을 올릴 수 있습니다 **. –

+0

죄송합니다. 사이트에 새로운 내용이 있습니다.이 모든 내용은 새로운 질문을 게시 할 예정입니다. – user3349011

답변

1

아래에 주어진 대답에 코드를 업데이트 한이 :

* 표시 getRandom * 기능은 납입`에 '0'의 값을 반환합니다
<script type="text/javascript"> 
      var count = 0; 
      var interval; 

      function getRandom(num){ 
       return Math.floor(Math.random()*num); 

      } 

      function changeColor(){ 
       count ++; 

       var num1 = getRandom(255); 
       var num2 = getRandom(255); 
       var num3 = getRandom(255); 
       var col = "rgb("+num1+","+num2+","+num3+")"; 
       var div = document.getElementById('myDiv'); 
       div.style.background = col; 

      } 

      function stop() { 
       clearInterval(interval); 
       alert('The background color has changed ' + count + ' times before you clicked me!'); 
      } 

      interval = setInterval("changeColor()", 2000); 

</script> 
<div id="myDiv"> 
<input type="button" onClick="stop()", value="I like this color" align="absmiddle"> 
</div> 
+0

굉장한 !!! 덕분에 대단히 – user3349011

+2

문자열을 함수로 감싸기 위해 Function 생성자를 호출하기 때문에 * setInterval *에 문자열을 전달하는 것은 좋지 않습니다. 그냥 함수에 대한 참조를 전달하면됩니다 :'setInterval (changeColor, 2000)'. :-) – RobG

관련 문제