Как вызвать функцию JavaScript при загрузке страницы в MVC3 - PullRequest
5 голосов
/ 05 сентября 2011

У меня есть функция 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 ]

5 голосов
/ 05 сентября 2011

Сначала укажите идентификатор диапазона (или что-то еще для идентификации)

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

Затем, используя javascript, сначала вычислите это относительное время, используя вашу функцию. Затем, используя jQuery.text () , установите это значение в span

<script>

$(document).ready(function() {
  var wallTimeStamp = '@item.wallTimeStamp';

  var relativeTimeValue = relativeTime(wallTimeStamp);

  $('#relativeTime').text(relativeTimeValue);
});

</scipt>

Модификация кода может потребоваться для нескольких пролётов такого типа

5 голосов
/ 05 сентября 2011
$(document).ready(function() {
 //called when the document is ready
});
3 голосов
/ 05 сентября 2011

Чтобы быть уверенным, что ваш код JavaScript запускается при загрузке DOM, вы должны использовать метод ready (). Посмотрите здесь для некоторых объяснений. Вы также можете использовать это сокращенное обозначение:

$(function() {
    //put your code here
});
2 голосов
/ 05 сентября 2011
<body onload="javascript:relativeTime(time);">

, где time - это то, что вы хотите.

Если вы хотите, чтобы это было как интерактивная вещь с присвоенным значением из вашей модели, тогда сделайте что-то вроде

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

edit:

хорошо ..

при условии, что ваше время в функции исходит от вашей модели:

@HiddenFor(m => m.time)

создайте отдельный файл js и свяжите егов html doc:

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

внутри него (если вы имеете в виду jquery):

$(function() {
    relativeTime($("#time").val());
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...