Per quanto riguarda le prestazioni, consiglio l'inferno span
.
<span id="string"><span id="h">12</span><span class="h">h</span><span id="m">12</span><span class="m">m</span><span id="s">12</span><span class="s">s</span></span>
Un arco per ogni h
, m
e s
lettere in modo da poterli stile correttamente (possono essere applicate né uguali o diversi styling per ciascuno).
E un altro intervallo per ogni numero in modo da poter memorizzare i riferimenti. In sintesi, ecco un JS per un orologio locale in tempo molto semplicistico:
//cache number container element references
var h = document.getElementById('h'),
m = document.getElementById('m'),
s = document.getElementById('s'),
//IE feature detection
textProp = h.textContent !== undefined ? 'textContent' : 'innerText';
function tick() {
var date = new Date(),
hours = date.getHours(),
mins = date.getMinutes(),
secs = date.getSeconds();
h[textProp] = hours < 10 ? '0'+hours : hours;
m[textProp] = mins < 10 ? '0'+mins : mins;
s[textProp] = secs < 10 ? '0'+secs : secs;
}
tick();
setInterval(tick, 1000);
Fiddle
Questo illustra l'idea di base di selettori nella cache. Non ricreando gli elementi, hai anche un buon incremento delle prestazioni.
Tuttavia, una volta al secondo non è un lavoro molto pesante per qualcosa di così semplice (a meno che non si abbiano centinaia di orologi nella pagina).
fonte
2013-04-14 00:37:27
Perché una cosa del genere non esiste. Probabilmente lo hai letto da un blog che suggerisce la sua implementazione - vedi http://css-tricks.com/a-call-for-nth-everything/ e scorri fino a ":: nth-letter()/:: last -letter()/:: nth-last-letter() "- e sì, puoi farlo facilmente con JS. –
@ FabrícioMatté, ho avuto una sensazione ... Potresti suggerire un altro modo per farlo (suppongo che sia abbastanza efficiente per essere eseguito ogni secondo? – n0pe
Forse qualcosa come questo http://codepen.io/FWeinb/pen/djuIx –