我有一个javascript函数
function relativeTime(time) {
var period = new Date(time);
var delta = new Date() - period;
if (delta <= 10000) { // Less than 10 seconds ago
return 'Just now';
}
var units = null;
var conversions = {
millisecond: 1, // ms -> ms
second: 1000, // ms -> sec
minute: 60, // sec -> min
hour: 60, // min -> hour
day: 24, // hour -> day
month: 30, // day -> month (roughly)
year: 12 // month -> year
};
for (var key in conversions) {
if (delta < conversions[key]) {
break;
}
else {
units = key;
delta = delta / conversions[key];
}
}
// Pluralize if necessary:
delta = Math.floor(delta);
if (delta !== 1) { units += 's'; }
return [delta, units, "ago"].join(' ');
}
给出像facebook评论一样的相对时差。
如何在我的视图中调用此功能。我正在使用mvc3。 我从数据库那里得到时间,
<span>
@item.wallTimeStamp
</span>
而不是我想调用javascript函数,
我有一个标签
<span>
//call javascript function that will display time difference in this tag
</span>
我该怎么做?
答案 0 :(得分:4)
$(document).ready(function() {
//called when the document is ready
});
答案 1 :(得分:4)
首先,给出span id(或其他用于识别的内容)
<span id="relativeTime">
</span>
然后,使用javascript,首先使用您的函数计算相对时间值。然后,使用jQuery.text(),在span
中设置该值<script>
$(document).ready(function() {
var wallTimeStamp = '@item.wallTimeStamp';
var relativeTimeValue = relativeTime(wallTimeStamp);
$('#relativeTime').text(relativeTimeValue);
});
</scipt>
此类多个跨度可能需要修改代码
答案 2 :(得分:3)
要确保在加载DOM时运行javascript代码,必须使用ready()方法。请查看here以获得一些解释。您也可以使用这种简短的表示法:
$(function() {
//put your code here
});
答案 3 :(得分:2)
<body onload="javascript:relativeTime(time);">
其中time
是您想要的任何内容。
如果您希望它是一个可点击的东西,并且您的模型具有指定的值,那么请执行类似
的操作<span onclick="relativeTime(@item.time)">@item.wallTimeStamp</span>
编辑:
好吧..
假设你在函数中的时间来自你的模型:
@HiddenFor(m => m.time)
创建一个单独的js文件,并将其链接到您的html doc:
<script type="text/javascript" src="whatever.js"></script>
在里面(假设你的意思是jquery):
$(function() {
relativeTime($("#time").val());
});