2011-09-05 93 views
5

我有一個JavaScript函數如何調用在頁面加載javascript函數在MVC3

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> 

我該怎麼辦呢?

+7

爵士的多跨度

<script> $(document).ready(function() { var wallTimeStamp = '@item.wallTimeStamp'; var relativeTimeValue = relativeTime(wallTimeStamp); $('#relativeTime').text(relativeTimeValue); }); </scipt> 

代碼修改這個值,你有你的個人資料8點的問題,你有沒有接受他們的單獨一個。你似乎沒有獎勵別人幫助你:( –

+1

這不是一個jQuery函數 – jzm

回答

4

首先,給跨度ID(或別的東西識別)

<span id="relativeTime"> 
</span> 

然後,使用JavaScript,首先使用計算出相對時間值的功能。然後,使用jQuery.text(),設置內部跨度可能需要的那種

+0

從邏輯上講它很好但不起作用。 – Bhargav

+0

什麼是錯誤?如果在客戶端發生錯誤或解析@ item.wallTimeStamp字符串爲Date,則可能需要爲其設置正確的格式。這是在你:) – archil

+0

沒有從var中的數據庫中獲取值wallTimeStamp ='@ item.wallTimeStamp';我怎樣才能獲得@ item.wallTimestamp值的函數?有什麼辦法可以得到這個嗎? – Bhargav

4
$(document).ready(function() { 
//called when the document is ready 
}); 
+0

你能解釋一下嗎? – Bhargav

+0

哪一個?你想在文檔加載時執行js函數 - 你可以在'ready (function(){..})' – Bozho

+0

這是JQuery語法,Bhargav顯然沒有使用JQuery框架。 –

2
<body onload="javascript:relativeTime(time);"> 

其中time是你希望它是什麼。

如果你想讓它與從模型分配值一個可點擊的東西,然後像做

<span onclick="relativeTime(@item.time)">@item.wallTimeStamp</span> 

編輯:

好吧..

假設你的時間的函數來自您的型號:

@HiddenFor(m => m.time) 

創建一個單獨的js文件,並l油墨在你的HTML文檔:

<script type="text/javascript" src="whatever.js"></script> 

裏面(假設你的意思的jQuery):

$(function() { 
    relativeTime($("#time").val()); 
}); 
+1

他得到了他所要求的。 – jzm

3

爲了確保你的JavaScript代碼,當DOM加載,你必須使用現成運行()方法。一些解釋請看here。您也可以使用這個shortahand符號來表示它:

$(function() { 
    //put your code here 
}); 
相關問題