以全小时为增量创建选择列表

时间:2016-01-02 07:32:48

标签: javascript html angularjs

有没有办法生成类似以下标记的内容:

<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点,

我正在使用Angular。

这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:1)

在某些控制器中,您应该预先生成以下值:

$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/

答案 1 :(得分:0)

您可以使用以下脚本:

<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链接中看到实时输出