2013-04-28 10 views
2

나는 웹 사이트를 디자인하고 있으며 모든 secnod를 호출하기 위해이 메소드를 호출하기 위해 wnat을 사용한다. asp.net을 사용하고 자바 스크립트에 대해서는 아무 것도 모른다. 그러나 나는이 코드를 사용했다. t 일! 여기에 내 코드를 모두 넣어 둡니다 (webform.aspx에 있음)!매초마다 메서드를 호출하는 방법?

<script > 
$(document).ready(function(){ 
var interval=setInterval(time(),5000);} 
</script> 
<script runat="server"> 
// <![CDATA[ 

public void time() 
{ 

     DateTime date = DateTime.Now; 
     string hour = date.Hour.ToString(); 
     string min = date.Minute.ToString(); 
     string sec = date.Second.ToString(); 
     time1.Value = hour + ":" + min + ":" + sec; 
} 

도움 주셔서 감사합니다!

+0

이것은 순수한 자바 스크립트가 아니며 게시 한 코드는 jQuery라는 라이브러리 코드를 사용하고 있습니다 ... 페이지에 포함 시켰습니까? – Ihsan

+0

페이지가 jquery.js입니까? ''$ (document) .ready()''가 jQuery 함수이기 때문에 – Belyash

+0

분명히하기 위해서 : 웹 페이지가 매초마다 ** 서버 측 ** 함수'time'을 호출하기를 원합니까? 그것은 아주 좋은 생각처럼 들리지 않습니다 ... –

답변

2

코드는 이러한 이유로 작동하지 않습니다

  • 을 당신은 함수를 호출하고 함수를 사용하는 콜백으로 반환 값을 대신 사용합니다 setInterval 호출에 time() 대신 time이 콜백.

  • 시간을 1 초 (1000ms) 대신 5 초 (5000ms)로 설정했습니다.

  • ready 호출의 닫는 괄호가 없습니다.

  • 이 함수는 Javascript가 아니지만 C#입니다. 클라이언트 스크립트에서 직접 서버 코드를 호출 할 수는 없습니다. 모든 (페이지에서 ID를 time1와 필드가 있다고 가정)을 해결하기 위해

, 그것은 다음과 같습니다

<script type="text/javascript"> 

$(document).ready(function(){ 
    var interval = setInterval(time, 1000); 
}); 

function time() { 
    var date = new Date(); 
    var hour = date.getHours(); 
    var min = date.getMinutes(); 
    var sec = date.getSeconds(); 
    $('#time1').val(hour + ":" + min + ":" + sec); 
} 

</script> 
+0

좋은 노트 주셔서 감사합니다, 당신의 코드를 사용하지만 작동하지 않습니다, 나는 JQuery를 포함해야한다고 생각하지만, 어떻게 그리고 어디서? –

+0

+1,하지만 불필요한 글로벌 '시간'을 만드는 이유는 무엇입니까? –

+0

@sarahsh :'head' 엘리먼트에'script' 태그를 사용하여 jQuery를 포함 시켰습니다. 이에 대한 자세한 정보가 필요하면 웹에서 많은 질문, 블로그 및 자습서로 잘 설명되어 있습니다. – Guffa

-1

는이 같은 기본 자바 스크립트 기능을 사용할 수 있습니다

<script type="text/javascript"> 
    // function like your server-side function 
    function time() { 
     var now = new Date(); 
     console.log(now.getHours() + ':' + now.getMinutes() + ':' + now.getSeconds()); 
    } 

    window.onload = function() { 
     setInterval(time, 1000) 
    }; 
</script> 

하지만 당신은 자바 스크립트의 1 초 실시간으로 일초에서 다를 수 있습니다 알고 있어야합니다.

+0

*'''setInterval (time(), 1000)' "* 다른'foo (bar(), 42)'처럼'time' 함수를 즉시 호출하여'setTimeout'에 반환합니다. 요구. 'time'에'()'을 쓰고 싶지 않다면, * call *이 아닌 * 함수를 * 참조하기를 원할 것입니다. 물론 –

+0

! 내 오타가 .. – Belyash

1

당신은 구문 오류 문제가, 당신은 포함하지 않은 jquery. 코드에 있지만 순수 자바 스크립트에 기반

내 예 :

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
<script> 
$(document).ready(function(){ 
    var interval=setInterval(time, 5000); 
}); // ending ')' was missing 
</script> 
<script> 
function time(){ 
    var date = new Date(); 
    alert("Hour is: " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds()); 
} 
</script> 
+1

'setTimeout'과 함께 문자열을 사용하지 마십시오. –

+0

네가 맞아. 고마워. 문자열에 eval()을 호출 할 필요가 없습니다. – s3m3n

1

좋아, 당신은 여기-잘되지 답변을 많이 받고 있습니다. (편집 : 어떻게 든 그럭저럭 Guffa's answer을 그리워 할 수 있었지만, 그가하는 것보다 더 자세하게 설명하면이 대답을 떠날 것입니다.) 또한이 답변에는 jQuery가 필요하지 않습니다. OP는 분명히 OP가 아닙니다. [달리]를 사용하여.) 자바 스크립트에서

, 반복적으로 함수를 호출, 당신이 중 하나를 사용할 수 있습니다 setInterval (반복적으로 호출하는) 또는 setTimeout (한 번)를 호출하고 함수 일정을 다음 호출 자체가되는 . 두 경우 모두 setInterval/setTimeout기능 참조으로 지정하려고합니다. 문자열을주고 싶지 않으므로 함수를 호출하고 싶지 않습니다. 다른 응답이 수행하는 것입니다. 그래서 : 첫 번째 줄을 찾아 갈 때 요소가 존재하도록

<script> 
(function() { 
    var elm = document.getElementById("id_of_element_you_want_to_contain_time"); 

    setInterval(updateTime, 1000); 

    function updateTime() { 
     var now = new Date(), 
      hours = zeropad(now.getHours(), 2), 
      minutes = zeropad(now.getMinutes(), 2), 
      seconds = zeropad(now.getSeconds(), 2); 

     elm.innerHTML = hours + ":" + minutes + ":" + seconds; 
    } 

    function zeropad(str, width) { 
     str = String(str); 
     while (str.length < width) { 
      str = "0" + str; 
     } 
     return str; 
    } 
})(); 
</script> 

id="id_of_element_you_want_to_contain_time"으로 아래의 요소를 해당 스크립트 를 넣습니다.

Live Example | Source

이제는 setInterval 또는 setTimeout 통화 중 하나를 사용했는지 여부에 관계없이 대략적인 시간 만 수행됩니다. 그래서 매초마다 업데이트하고 싶다면 매초마다 일정을 잡으면 약간 고르지 않게 보일 것입니다. 그래서 당신이하고있는 일이 브라우저에 원격으로 세금을 부과하는 것이 아니므로 1/4 초 (250ms)마다 모든 작업을 수행 할 수 있습니다. Live Example | Source

+0

setinterval에 문자열을 사용하지 않는 이유는 무엇입니까? – Robbert

+0

@ 로버트 : 몇 가지 이유가 있습니다. 문자열을'setInterval' /'setTimeout'과 함께 사용하면 브라우저는 JavaScript 파서를 실행하여 파싱해야합니다. (큰 문제 없음) 2) 호출하는 함수는 전역이어야합니다. Bad Thing), 3) 코드와 함께 minifier/compressor/packer를 사용할 수 없습니다 (짧은 이름으로 이름을 변경하려는 경우). 반면에 함수 참조를 전달하면 추가 구문 분석이없고 개인 함수를 사용할 수 있으며 코드를 압축/압축/압축 할 수 있습니다. –

관련 문제