簡體   English   中英

將字符串作為變量傳遞給JavaScript函數不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM