2011-09-05 28 views
5

Ho una funzione javascriptcome chiamare funzione javascript al caricamento della pagina in 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(' '); 

} 

che danno relativa differenza di tempo come facebook commento.

Come posso chiamare questa funzione a mio avviso. Sto usando mvc3. sto ottenendo il tempo dal database come,

 <span> 
      @item.wallTimeStamp 
     </span> 

invece di che voglio chiamare funzione javascript,

Ho un tag

<span> 
    //call javascript function that will display time difference in this tag 
    </span> 

come posso farlo?

+7

Sir, si dispone di 8 domande nel tuo profilo e non hai accettato uno solo di loro . Non sembri ricompensare gli altri che ti aiutano :( –

+1

Questa non è una funzione jquery – jzm

risposta

4

In primo luogo, dare l'id arco (o qualcos'altro per l'identificazione)

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

Poi, utilizzando JavaScript, prima di calcolare che il valore temporale relativo usando il vostro funzione. Quindi, utilizzando jQuery.text(), impostare tale valore all'interno lasso

<script> 

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

    var relativeTimeValue = relativeTime(wallTimeStamp); 

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

</scipt> 

modifica del codice può essere necessaria per più campate del genere

+0

logicamente è buono ma non funziona. – Bhargav

+0

Qual è l'errore? Se si verifica un errore o si analizza la stringa @ item.wallTimeStamp come Data sul lato client, potrebbe essere necessario impostare il formato corretto. È su di voi :) – archil

+0

Non si ottiene valore dal database in var wallTimeStamp = '@ item.wallTimeStamp'; come posso ottenere il valore @ item.wallTimestamp in funzione? C'è un modo per ottenere questo? – Bhargav

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

puoi spiegare questo? – Bhargav

+0

quale? Si voleva eseguire una funzione js quando il documento è caricato - è possibile eseguirlo nel 'pronto (function() {..}) ' – Bozho

+0

Questa è la sintassi di JQuery, Bhargav chiaramente non sta usando il framework JQuery. –

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

dove time è quello che vuoi che sia.

Se si desidera come una cosa cliccabile con un valore assegnato dal modello, quindi fare qualcosa di simile

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

edit:

bene ..

supponendo che il tempo nella funzione viene dal tuo modello:

@HiddenFor(m => m.time) 

creare un file js separato e l inchiostro nel tuo documento HTML:

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

al suo interno (supponendo che si intende jquery):

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

ha ottenuto ciò che chiedeva. – jzm

3

per essere sicuri che il codice JavaScript viene eseguito quando il DOM è stato caricato è necessario utilizzare il pronto() metodo. Guarda here per qualche spiegazione. È possibile utilizzare anche questa notazione shortahand per esso:

$(function() { 
    //put your code here 
}); 
Problemi correlati