我在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;
}