无法在javascript中设置属性错误

时间:2013-11-27 20:10:34

标签: javascript html

所以我有这个代码,相应地检查日期和更新列表,现在我想要实现的是当月份和年份都设置为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个出生日期。

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'。我认为可能有一些我不完全理解的概念,但我的方法似乎解决了我的问题。