最近在做一个网站的日历签到控件,要比较两个数组里的数据并合并成一个数组,就想用IndexOf方法查找数据的位置合并数据,但是运行在IE8下数组没有IndexOf方法;
/******解决IE8 数组无IndexOf方法*****/
if (!Array.prototype.indexOf)
{
Array.prototype.indexOf = function(elt /*, from*/)
{
var len = this.length >>> 0;
var from = Number(arguments[1]) || 0;
from = (from < 0)
? Math.ceil(from)
: Math.floor(from);
if (from < 0)
from += len;
for (; from < len; from++)
{
if (from in this &&
this[from] === elt)
return from;
}
return -1;
};
}
日期签到控件里面时间我是存在一个数组里面的,数组格式例如 ["2014-12-1","2014-12-2",.......];但是要把数组里面的数据转换成时间,但是在IE8,firebox下实例Date就会发生不兼容问题;
/********运用正则法则取出时间并格式化成浏览器兼容的时间变量*********/
/**
* 运用正则法则取出时间并格式化成浏览器兼容的时间变量
*/
function parseDate(dateStringInRange) {
var isoExp = /^\s*(\d{4})-(\d{1,2})-(\d{1,2})\s*$/,
date = new Date(NaN), month,
parts = isoExp.exec(dateStringInRange);
if(parts) {
month = +parseInt(parts[2]);
date.setFullYear(parseInt(parts[1]), parseInt(month) - 1, parseInt(parts[3]));
if(month != date.getMonth() + 1) {
date.setTime(NaN);
}
}
return date;
}