所以我有这个代码,相应地检查日期和更新列表,现在我想要实现的是当月份和年份都设置为null“mm”“yyyy”设置日期选择列表中包含一个元素“dd”,其值为null。但我一直有错误无法设置未定义的属性'值'。年份和月份s中的第一个元素设置为null。
这是一个javascript函数,这里有一个人帮我提出:
function monthDays (type) {
if(document.getElementById('monthof' + type).value == null || document.getElementById('yearof' + type).value == null)
{
var mod = document.getElementById('dayof' + type);
mod.length = 1;
mod[0].value = null;
mod[0].text = "DD";
}
else{
var month = parseInt(document.getElementById('monthof' + type).value, 10),
days = new Date(document.getElementById('yearof' + type).value, month + 1, 0).getDate(),
i;
var mod = document.getElementById('dayof' + type);
mod.length = days + 1;
mod[0].value = null;//this is where i am getting the error
mod[0].text = "DD";
for(i = 1; i < days+1; i++) {
mod[i].value = i;
mod[i].text = i;
}
}
}
HTML 出生: MM
<select id="dayofbirth" class="date" name="dayhofbirth">
<option value=null>DD</option>
</select>
<select id="monthofbirth" class="year" name="monthofbirth" onchange="monthDays('birth')">
<option value=null>MM</option>
</select>
<select id="yearofbirth" class="year" name="monthofbirth" onchange="monthDays('birth')">
<option value=null>YYYY</option>
</select>
</div>
该类型是告诉函数它应该编辑的,因为在我的html中我有2个出生日期。
答案 0 :(得分:1)
当您选择getElementById( )
元素时,select
返回的对象将返回对元素的引用,而不是选项数组。您可以通过对象上的属性访问选项,但不需要这样做来设置所选选项。要设置所选选项,只需设置您的值,但删除[0]
部分。您还需要将null
设置为字符串('null'
),因为它是HTML中的字符串值。
以下是我为您提出的建议:
<强> HTML 强>
<select id="dayofbirth" class="date" name="dayhofbirth">
<option value=null>DD</option>
<option value=01>01</option>
</select>
<select id="monthofbirth" class="year" name="monthofbirth" onchange="monthDays('birth')">
<option value=null>MM</option>
<option value=12>12</option>
</select>
<select id="yearofbirth" class="year" name="monthofbirth" onchange="monthDays('birth')">
<option value=null>YYYY</option>
<option value=1900>1900</option>
</select>
<强>的Javascript 强>
function monthDays(type) {
if(document.getElementById('monthof' + type).value == null || document.getElementById('yearof' + type).value == null)
{
var mod = document.getElementById('dayof' + type);
mod.length = 1;
mod.value = 'null';
}
else{
var month = parseInt(document.getElementById('monthof' + type).value, 10),
days = new Date(document.getElementById('yearof' + type).value, month + 1, 0).getDate(),
i;
var mod = document.getElementById('dayof' + type);
mod.value = 'null';
for(i = 1; i < days+1; i++) {
mod.add(i);
}
}
}
在此处查看此行动:http://jsfiddle.net/CT54h/
它可能没有你想要的所有,但它在问题的范围内。
答案 1 :(得分:0)
我发现了我必须做的事情,我将每个开头的值设置为'null'而不是null,而且当我检查它们的值时,我也检查了'null'。我认为可能有一些我不完全理解的概念,但我的方法似乎解决了我的问题。