我有一天< SELECT>字段和一个月< SELECT>字段和日期< SELECT>应包含< OPTION>的月份天数。例如,如果我从月份选择四月< SELECT>当天< OPTION>的数量< SELECT>是30.我的问题是:如何添加< OPTION> < SELECT>之间的字段和< / SELECT>?
这是HTML代码:
<div class="input">
<label>Date de naissance</label>
<br>
<select name="jour"></select>
<select name="mois" onchange="ajouterJours(this.options[this.selectedIndex].text);"></select>
<input type="number" name="annee">
</div>
这是我到目前为止创建的JS脚本:
他的功能将对页面的负载起作用:
function main()
{
var i = 0;
var moisSelect = form.mois;
while (i<12)
{
i++;
moisSelect // here I cant figure out what to do with the month SELECT to add options
}
}
这是在&lt; SELECT&gt;之间添加选项的功能。和&lt; / SELECT&gt;当天&lt; SELECT&gt;字段:
function ajouterJours(mois)
{
var mois = 0;
var jourSelect = form.jour;
switch(mois)
{
case 1,3,5,7,8,10,12:
mois = 31;
break;
case 2:
mois = 29;
break;
case 4,6,9,11:
mois = 30;
}
var i = 0;
while (i<m)
{
i++;
jourSelect // here I cant figure out what to do with the day SELECT to add options
}
}
答案 0 :(得分:0)
将一个元素添加为另一个元素的通用代码如下所示:
// i assume this has already been done
var select = <get your select element here>;
...
var option = document.createElement('option');
option.value = "the value";
option.appendChild(document.createTextNode('The Label'));
select.appendChild(option);
删除一个的代码很简单;事实上,要删除最后一个,这是微不足道的。
select.removeChild(select.lastChild);
最简单的代码我能想出一个月来确定一个月的天数(同时适当考虑闰年):
function daysInMonth(month, year) {
if (!month) month = (new Date()).getFullYear();
var lastDay = new Date(Date.UTC(year, month % 12, 1) - 1);
return lastDay.getDate();
}
现在,考虑一下这个问题。您希望使选项数与月份更改时的月份天数相匹配。在伪代码中:
on month change:
newNumberOfDays = daysInMonth(selected month, selected year)
while current number of options =/= newNumberOfDays:
if newNumberOfDays > current number of options
add an option for (current number of options) + 1
else
remove the last option
答案 1 :(得分:0)
您可以将新选项元素添加到这样的选择中:
select.options[index] = new Option(text, value);
您也可以通过将length
属性设置为0
以下是您的问题的工作示例:http://jsfiddle.net/inti/KTJMA/
HTML
<select name="mois"></select>
<select name="jour"></select>
JS
var select_mois = document.getElementsByName("mois")[0];
var select_jour = document.getElementsByName("jour")[0];
select_mois.length = 0;
for (var m=0; m<12; m++) {
select_mois.options[m] = new Option(m+1, m+1);
}
select_mois.onchange = function() {
var val = this.options[this.selectedIndex].value
addJour(val);
}
select_mois.onchange();
function addJour(m) {
var days = daysInMonth(m, (new Date()).getFullYear())
select_jour.length = 0;
for (var j=0;j<days;j++) {
select_jour.options[j] = new Option(j+1, j+1);
}
}
function daysInMonth(month, year) {
return new Date(year, month, 0).getDate();
}