2016-11-21 5 views
0

나는 당혹스럽고 간단한 문제에 봉착했습니다. 나는 ASP.NET을 잘 알고 있지만 잘 JavaScript를 사용하지는 않습니다. 내 홈페이지에 다양한 자바 스크립트 파일을 사용하는 훌륭한 카운트 다운 시계가 있습니다. 종료일이 저장된 파일을 찾았으며 정적 값입니다.JavaScript 함수에 문자열을 변수로 전달하면 작동하지 않습니다.

$(".count-down").ccountdown(2016,12,25,'10:00'); 

본인은 CMS에서 누군가가 관리자 패널의 값을 설정할 수 있도록 내 데이터베이스에서 채워지는에 HiddenField에서 날짜를 읽고 싶어. 나는 다음을 코딩했다.

var countdowndate = document.getElementById('hdnCountdownDate').value; 
//alert(countdowndate); 
$(".count-down").ccountdown(countdowndate); 

(참고 상기 .ccountdown 오타 아님)

는 ASP.NET 필드이고;

<form runat="server"> 
    <asp:HiddenField ID="hdnCountdownDate" runat="server" /> 
</form> 

홈페이지에 대한 코드 숨김은 hiddenfield 값을 설정합니다.

hdnCountdownDate.Value = "2016,12,25,'10:00'" 

나는 변수의 선언 및 설정 후 경고를 배치하고 정적 것과 동일한 값을 제공하지만 정적 텍스트와 함수에서 변수를 교환하는 경우에만 작동합니다. 누군가 나를 기쁘게 도와 줄 수 있습니까?

렌더링 된 HTML은입니다.

<input type="hidden" name="ctl00$hdnCountdownDate" id="hdnCountdownDate" value="2016,12,25,'10:00'"> 

countdowndate 변수를 일관된 변수로 나눠서 시도했지만 sitll은 작동하지 않습니다.

var countdowndate = document.getElementById('hdnCountdownDate').value; 
var resarray = countdowndate.split(","); 
$(".count-down").ccountdown(resarray[0],resarray[1],resarray[2],resarray[3]); 

JS 기능은 다음과 같습니다.

(function($) { 
$.fn.ccountdown = function(_yr, _m, _d, _t) { 
    var $this = this; 
    var _montharray = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec") 
    var _today = new Date(); 
    // calling function first time so that it wll setup remaining time 
    var _changeTime = function() { 
     var _today = new Date(); 
     var _todayy = _today.getYear(); 
     if (_todayy < 1000) 
      _todayy += 1900; 
     var _todaym = _today.getMonth(); 
     var _todayd = _today.getDate(); 
     var _todayh = _today.getHours(); 
     var _todaymin = _today.getMinutes(); 
     var _todaysec = _today.getSeconds(); 
     _todaysec = "0" + _todaysec; 
     _todaysec = _todaysec.substr(_todaysec.length - 2); 
     var _todaystring = _montharray[_todaym] + " " + _todayd + ", " + _todayy + " " + _todayh + ":" + _todaymin + ":" + _todaysec; 
     var _futurestring = _montharray[_m - 1] + " " + _d + ", " + _yr + " " + _t; 
     /* calculation of remaining days, hrs, min, and secs */ 
     _dd = Date.parse(_futurestring) - Date.parse(_todaystring); 
     _dday = Math.floor(_dd/(60 * 60 * 1000 * 24) * 1); 
     _dhour = Math.floor((_dd % (60 * 60 * 1000 * 24))/(60 * 60 * 1000) * 1); 
     _dmin = Math.floor(((_dd % (60 * 60 * 1000 * 24)) % (60 * 60 * 1000))/(60 * 1000) * 1); 
     _dsec = Math.floor((((_dd % (60 * 60 * 60 * 1000 * 24)) % (60 * 60 * 1000)) % (60 * 1000))/1000 * 1); 
     var el = $($this); 
     var $ss = el.find(".second"), $mm = el.find(".minute"), $hh = el.find(".hour"), $dd = el.find(".days"); 
     $ss.val(_dsec).trigger("change"); 
     $mm.val(_dmin).trigger("change"); 
     $hh.val(_dhour).trigger("change"); 
     $dd.val(_dday).trigger("change"); 
}; 
    _changeTime(); 
    setInterval(_changeTime, 1000); 
}; 

})(jQuery); 
+1

ASP.NET을 잘 알고 있습니까? 그렇게했다면, 당신은'hdnCountdownDate'가 숨겨진 필드의 실제 HTML ID가 될 수 없다는 것을 알 것입니다. –

+0

예 알아 두지 만 경고가 숨겨진 필드의 올바른 값을 표시합니다. var countdowndate = document.getElementById ('<% = hdnCountdownDate.ClientID %>'). value; 그것은 전혀 작동하지 않습니다 –

+0

@AlastairW는 –

답변

0

년, 월, 일 및 시간 문자열 인 .ccountdown()에 4 개의 인수를 전달해야합니다.

코드에서 입력에서 가져온 문자열 인 인수 하나만 전달합니다.

+0

와 같은 parseInt를 사용하십시오. 답장을 보내 주셔서 감사합니다. 변수를 선언하는 codebehind 부분을 포함 시켰습니다. 4 개의 변수가 전달되었고, 3 개의 정수가 있고 시간은 문자열입니다. –

+0

나는 $ (". count-down") .ccountdown (countdowndate);'가 아닌, 확실하게 여기에 하나의 인자를 넘겨 줄 것을 보장한다. 12. –

+0

나는 무슨 뜻인지 안다. 전달되는 변수는 4 개의 변수가 포함 된 쉼표로 구분 된 문자열이지만 하나의 변수입니다. 배열로 분할하고 각각을 전달했지만 작동하지 않습니다. 나는 그것을 올바르게 했는가? 위의 편집을 참조하십시오. –