Lógica de bucle for para crear dinámicamente un tiempo basado en un índice
Frecuentes
Visto 81 equipos
1
Así que tengo 43 botones de radio. Cuando se selecciona uno de ellos, devuelve su número de índice. Está basado en cero, por lo que es 0-42. Cada índice corresponde a un tiempo particular. 0 es 8:00 am y 42 es 10:00 pm, cada índice aumenta el tiempo por 20 minutos. Esencialmente, estoy tratando de generar el tiempo que necesito sin tener que crear manualmente sentencias if para cada índice. Aquí está el código roto que tengo hasta ahora.
function decipherIndex(radx) {
var actime = "";
var hr = 8;
var min = 0;
var day = "am";
for (i=0;i<radx;i++) {
min = min + 20;
if (min = 60) {
hr = hr + 1;
min = 0;
}
if (hr = 13) {
hr = 0;
day = "pm";
}
}
actime = hr + ":" + min + day;
alert(actime);
}
Espero que alguien pueda ayudarme a resolver mi lógica aquí. radx es el índice que se pasa a la función.
1 Respuestas
3
if (min = 60) {
hr = hr + 1;
min = 0;
}
if (hr = 13) {
hr = 0;
day = "pm";
}
Estás asignando con el =
, asi que min
y hr
siempre será 0
y day
siempre será "pm"
. Utilizar ==
or ===
comparar:
if (min == 60) {
hr = hr + 1;
min = 0;
}
if (hr == 13) {
hr = 0;
day = "pm";
}
Sin embargo, no es necesario un bucle; todo lo que necesitas es un poco de matemáticas.
function decipherIndex(i) {
var t = 60 * 8 + i * 20;
var min = t % 60;
var hr = t / 60 | 0;
return hr % 12 + ':' + (min < 10 ? '0' : '') + min + (hr >= 12 ? ' PM' : ' AM');
}
Respondido 03 Jul 12, 23:07
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas javascript or haz tu propia pregunta.
Información complementaria:
===
es una comparación sin conversión stackoverflow.com/questions/359494/… - lazEl mío es dos caracteres más corto :P - mellamokb
Gracias, eso era todo lo que necesitaba. - Vikram