在 javascript 中发送参数 DateTime



我在javascript中发送参数datetime类型时遇到问题。我有一个功能

function LoadHamuleFromDate(date) {
    alert(date);
    var day = date.toString().substr(0, 2);
    var month = date.toString().substr(2, 2);
    var year = date.toString().substr(4, 4);
    var d = day + "." + month + "." + year;
    alert(d);
}

当我向此函数发送日期参数时,我的代码崩溃了,我不知道为什么

document.getElementById("div_TarihButtonList").innerHTML += "<a   class='small button' 
' onclick='LoadHamuleFromDate(" + Number(result[i].tarih) + ")'>" + result[i].tarih + "</a></div>";

我可以看到结果并且没有问题的数据,但是当我单击并发送10.10.2010时,我收到此错误:Uncaught SyntaxError: Unexpected identifier。对于这个问题,我该怎么办?

更新:

罪魁祸首很可能是您正在使用的 Number() 强制转换。

onclick='LoadHamuleFromDate(" + Number(result[i].tarih) + ")'

注意:使用 Number() 时,如果参数是 Date 对象,则 Number() 函数返回自 1970 年 1 月 1 日午夜 UTC 以来的毫秒数。

此外,如果您没有传递日期,而是实际传递字符串"10.10.2014"或类似字符串,它将抛出 NaN 错误,因为这不是数字或日期。

删除数字转换,然后重试:

document.getElementById("div_TarihButtonList").innerHTML += "<a   class='small button' 
' onclick='LoadHamuleFromDate(" + result[i].tarih + ")'>" + result[i].tarih + "</a></div>";

旁注:

我只用你的JavaScript做了一个小提琴,它运行没有错误。但是,它确实会提醒错误的结果,因为您的 subst 调用是错误的。 如果您的输入采用 DD.MM.YYYY 格式,则它应如下所示:

var day = date.toString().substr(0, 2);
var month = date.toString().substr(3, 2);
var year = date.toString().substr(6, 4);

正如其他海报所说,如果您以多种方式获取日期格式,您的代码也需要处理它。 我只是在解决你说你的日期格式是什么。

http://jsfiddle.net/CyBQJ/

您需要处理这两种情况:10102014 & 10.10.2014

试试这个:

function LoadHamuleFromDate(date) {
    var d, m, y;
    d = date.toString().substr(0, 2); // day
    if(!isNaN(date)){ // 10102014       
        m = date.toString().substr(2, 2);
        y = date.toString().substr(4, 4);
    } else { // 10.10.2014
        m = date.toString().substr(3, 2);
        y = date.toString().substr(6, 4);
    }
    alert(day + "." + month + "." + year)
}

==== 编辑 =====

我有一个更好的解决方案:

function LoadHamuleFromDate(date) {
    var _date = date.toString().replace(/./gi, ""), // conversion from 10.10.2014 to 10102014 format
        day = _date.toString().substr(0, 2),
        month = _date.toString().substr(2, 2),
        year = _date.toString().substr(4, 4);
    alert(date + " --> " + day + "." + month + "." + year);
    //return _date;
}

最新更新