2013-11-27 8 views
1

에서 속성 오류를 설정할 수 없기 때문에 날짜와 업데이트 목록을 확인하는 코드가 있으므로 지금 내가 달성하려고하는 것은 월과 연도가 null로 설정되면 "mm" "yyyy "는 하나의 요소"dd "가 null 인 날 선택 목록으로 설정됩니다. 하지만 난 정의되지 않은 속성 '값'을 설정할 수 없습니다 오류가 발생했습니다. 연도와 월 모두의 첫 번째 요소는 null 값으로 설정됩니다.javacript

이 남자가 나를 여기에 가지고 올 도움이 자바 스크립트 함수 :

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

id가 'monthofbirth' 인 항목이 없습니다. – PSL

+0

실제 코드에 오타가 있습니다. – mikkuslice

답변

1

getElementById()에 의해 반환 된 객체는 select 요소를 선택할 때 옵션 배열이 아닌 요소에 대한 참조를 반환합니다. 개체의 속성을 통해 옵션에 액세스 할 수 있지만 선택한 옵션을 설정하기 위해 필요하지는 않습니다. 선택한 옵션을 설정하려면 값을 그대로 설정하고 [0] 부분을 제거하십시오. null은 HTML의 문자열 값이기 때문에 문자열 ('null')으로 설정해야합니다. 여기

내가 당신을 위해 내놓았다 내용은 다음과 같습니다

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> 

자바 스크립트

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/

아마도 모든 것을하고 싶지 않지만 질문의 범위 내에서 수행합니다.

+0

값을 설정하지 않았으므로 .add의 범위를 완전히 알 수는 없지만 사용자의 노력에 감사드립니다. 도와주세요 :) – mikkuslice

+0

'.add()'메소드를 호출하면 주목 한 값을 지정하지 않지만, 기본적으로 값은 옵션 태그의 내용입니다.이 태그는 여러분이 기술적으로하는 일입니다. 예. '.add()'메소드에 대해 더 알고 싶다면, 다음을 방문하십시오 : http://www.w3schools.com/jsref/met_select_add.asp –

0

나는 무엇을해야하는지 알았고, 나는 null 값이 아닌 'null'로 시작하는 값을 설정했고, 값을 확인했을 때보다 'null'도 확인했습니다. 내 개념이 내 문제를 해결 한 것처럼 보였을 때 완전히 이해하지 못하는 개념이있을 수 있다고 생각합니다.