http://jsfiddle.net/AVLzH/14/
我正在尝试构建我的第一个jQuery扩展函数,该函数将采用YYYYMMDDHHMMSS
的时间格式,并将其转换为类似Just a moment ago
或2 hours ago
的可读内容,在将其转换为扩展函数之前,我的代码运行良好。
边栏:是的,我知道最好使用服务器端代码来获取当前时间,这只是出于示例目的
当我调用该函数时,它位于一个链中,该链从所有datetime
元素中获取<time>
属性,并切换返回内容的文本并将旧文本设置为data-tooltip
。
有很多代码,因此最好查看jsfiddle页面:
http://jsfiddle.net/AVLzH/14/
jsLint返回以下错误:
Error:
Expected an assignment or function call and instead saw an expression.
});
Expected '(end)' and instead saw '}'.
})( jQuery );
Implied global: jQuery 3, console 19,20,22,23,40,50,75
是的,基本上我不知道该怎么办。
感谢您提前提供的帮助!
http://jsfiddle.net/AVLzH/14/
PS-不小心在其中放了旧代码..更改了链接
感谢您到目前为止的所有帮助。jsLint不再返回任何错误,但是无法正确执行。
最佳答案
归还后的部分有误
return returning;
};
});
})( jQuery );
,它应显示为:
return returning;
};
}( jQuery ));
尝试使用Jsfiddle上的JSLint按钮来检查语法。
(function( $ ) {
jQuery.fn.fixTime = function(activityTime) {
var currentTime = new Date(),
month = currentTime.getMonth() + 1,
day = currentTime.getDate(),
year = currentTime.getFullYear(),
hour = currentTime.getHours(),
minute = currentTime.getMinutes(),
second = currentTime.getSeconds(),
activityTime = new Date(parseInt(this.attr('datetime'), 10)),
masterTime = (year*10000000000) + (month*100000000) + (day*1000000) + (hour*10000) + (minute*100) + (second * 1),
timeDifference = masterTime - activityTime,
returning;
console.log("Current Time: " + month + "/" + day + "/" + year + " " + hour + ":" + minute + ":" + second);
console.log("Current Time: " + year + "/" + month + "/" + day + " " + hour + ":" + minute + ":" + second);
console.log("Current Time: " + masterTime);
console.log("Activity Time: " + activityTime, this);
console.log(this.attr('datetime'))
console.log(new Date(20120211103802))
// Change Time
timeDifference = timeDifference + 0;
// YYYYMMDDHHMMSS
// 60 - 1 Min
// 6000 - 1 Hour
// 240000 - 1 Day
// 7000000 - 1 Week
// 30000000 - 1 Month
// 10000000000 - 1 Year
// YYYYMMDDHHMMSS
console.log("Time Difference: " + timeDifference);
if (0 <= timeDifference && timeDifference < 60) {
returning = "Just a moment ago";
} else if (60 <= timeDifference && timeDifference < 120) {
returning = "A minute ago";
} else if (120 <= timeDifference && timeDifference < 6000) {
timeDifference = Math.floor(timeDifference/100);
returning = timeDifference + " minutes ago";
} else if (6000 <= timeDifference && timeDifference < 20000) {
console.log("1 hour ago");
} else if (20000 <= timeDifference && timeDifference < 240000) {
timeDifference = Math.floor(timeDifference/10000);
returning = timeDifference + " hours ago";
} else if (240000 <= timeDifference && timeDifference < 2000000) {
returning = "Yesterday";
} else if (2000000 <= timeDifference && timeDifference < 7000000) {
timeDifference = Math.floor(timeDifference/1000000);
returning = timeDifference + " days ago";
} else if (7000000 <= timeDifference && timeDifference < 14000000) {
return "A week ago";
} else if (14000000 <= timeDifference && timeDifference < 30000000) {
timeDifference = Math.floor(timeDifference/7000000);
returning = timeDifference + " weeks ago";
} else if (30000000 <= timeDifference && timeDifference < 200000000) {
returning = "A month ago";
} else if (200000000 <= timeDifference && timeDifference < 10000000000) {
timeDifference = Math.floor(timeDifference/100000000);
returning = timeDifference + " months ago";
} else if (10000000000 <= timeDifference && timeDifference < 20000000000) {
returning = "A year ago";
} else if (20000000000 <= timeDifference && timeDifference < 1000000000000) {
timeDifference = Math.floor(timeDifference/10000000000);
returning = timeDifference + " years ago";
} else {
console.error("Error Calculating"); // Only when less than zero or longer than 100 years
returning = "undefined";
}
return returning;
};
}( jQuery ));
(function() {
var times = $('time');
times.each(function() {
var beforeTime = $(this).text();
// var betterTime = new Date($(this).attr('datetime'));
var betterTime = $(this).fixTime();
$(this).text(betterTime).attr('data-tooltip', beforeTime);
});
})();
关于javascript - $ .fn.fixTime不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9272654/