如何在mvc3中的页面加载上调用javascript函数

时间:2011-09-05 10:39:37

标签: javascript asp.net-mvc-3 jquery

我有一个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>

我该怎么做?

4 个答案:

答案 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());
});