Есть ли способ создать что-то вроде следующей разметки:
<select>
<option value="0000">00:00AM</option>
<option value="0100">01:00AM</option>
<option value="0200">02:00AM</option>
<option value="0300">03:00AM</option>
<!--rest of options omitted for brevity-->
</select>
... до 11:00 вечера,
Я использую Angular.
Каков наилучший способ сделать это?
В некоторых контроллерах вы должны предварительно генерировать эти значения:
$scope.hours = {};
//first 12 hours
$scope.hours['0000'] = '12:00AM';
for(var i = 1; i < 12; ++i) {
var hour = i < 10 ? '0' + i : i;
$scope.hours[hour + '00'] = hour + ':00AM';
}
//last 12 hours
$scope.hours['1200'] = '12:00PM';
for(var i = 1; i < 12; ++i) {
var hour = i < 10 ? '0' + i : i;
$scope.hours[i + 12 + '00'] = hour + ':00PM';
}
И затем в вашем шаблоне:
<select>
<option ng-repeat="(value, label) in hours | orderBy: value" value="{{ value }}">
{{ label }}
</option>
</select>
Проверьте эту скрипту: http://jsfiddle.net/hspqfouq/1/
вы можете использовать следующий скрипт:
<select id="hours">
</select>
<script>
var data="";
for (var i=0;i<12;i++)
{
d=i*1;
d1="0";
d2="00";
if (i>9) {d1="";}
data+="<option value='"+d1+d+d2+"'>"+d1+d+":"+d2+"AM</option>";
}
var s=document.getElementById("hours");
s.innerHTML=data;
</script>
вы можете увидеть живой результат в этой ссылке jsfiddle