[英]Passing a string as a variable into JavaScript function doesn't work
我陷入了一个尴尬的简单问题。 我非常了解ASP.NET,但我不太了解JavaScript。 我的首页上有一个不错的倒计时时钟,它使用各种JavaScript文件。 我找到了存储结束日期的文件,它是一个静态值。
$(".count-down").ccountdown(2016,12,25,'10:00');
我想从数据库中填充的hiddenfield中读取日期,以便CMS中的某人可以在管理面板中设置值。 我编写了以下代码;
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);
您需要向.ccountdown()
传递4个参数:年,月,日和时间字符串。
在您的代码中,您仅传递一个参数,该参数是从输入中获取的字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.