2012-01-18 14 views
5

Non sono molto bravo in Javascript. Manipolazione del tempo.Javascript Dynamic Drop Drop

Ecco cosa sto cercando di fare: ho un'interfaccia utente che ha bisogno di un elenco a discesa dell'ora di fine. È un insieme di tempi finiti, essenzialmente dalle 7:00 alle 22:00 con incrementi di 15 minuti. Sto utilizzando jQuery e si desidera creare sul a Selezionare scatola che assomiglia a questo fly:

<select> 
<option value="420">7:00 AM</option> 
<option value="435">7:15 AM</option> 
<option value="450">7:30 AM</option> 
etc... 
</select> 

Qualcuno sa come fare questo in javascript/jQuery. Voglio fare qualcosa di dinamico come questo:

for(int i = 420; i<=1320; i+=15){ 
//use value of i to increment a date or something and create an option for the drop down... this is where I am stuck 
} 
+0

Basta avere una variabile per l'ora e una variabile per minuto. Aumentare la variabile dei minuti di 15 minuti e incrementare la variabile dell'ora se la variabile dei minuti supera 60. Molto probabilmente sarà meno efficiente e avrà un sovraccarico minore rispetto all'utilizzo di una data. – Hello71

risposta

18

Il seguente frammento dovrebbe aiutare a ottenere l'idea:

function populate(selector) { 
    var select = $(selector); 
    var hours, minutes, ampm; 
    for(var i = 420; i <= 1320; i += 15){ 
     hours = Math.floor(i/60); 
     minutes = i % 60; 
     if (minutes < 10){ 
      minutes = '0' + minutes; // adding leading zero 
     } 
     ampm = hours % 24 < 12 ? 'AM' : 'PM'; 
     hours = hours % 12; 
     if (hours === 0){ 
      hours = 12; 
     } 
     select.append($('<option></option>') 
      .attr('value', i) 
      .text(hours + ':' + minutes + ' ' + ampm)); 
    } 
} 

populate('#timeSelect'); // use selector for your select 
+0

Questo mi ha fatto andare! Grazie!! – Matt