2013-02-20 10 views
1

을 사용하여 속성 값을 가져올 수 없습니다. '속성'의 값을 가져올 수 없습니다. '가 확인되었습니다. 개체가 null이거나 정의되지 않았습니다. "라는 오류 메시지가 나타납니다. 확인란을 클릭하면javacript

양식의 이름은 'test'이며 첫 번째 확인란의 선택에 따라 더 많은 입력 필드를 표시하고 다른 필드를 표시하지 않으려는 경우 입력 필드를 표시하려고합니다.

<input type="checkbox" name="submode" onclick="showhidefield()"> 

가이 다른 웹 페이지와 모든 브라우저에서 작동 그래서 내 JS가 더 단단한 만들 수있는 방법이 있나요 :

function showhidefield() 
{ 
    if (document.test.submode.checked) { 
     document.getElementById("hideablearea").style.display = "block"; 
    } else { 
     document.getElementById("hideablearea").style.display = "none"; 
    } 
} 

가 여기 내 입력 라인이다 : 여기

스크립트입니다 ?

답변

0

"test"이라는 페이지에 항상 <form>이있는 것은 아닙니다.

<input type="checkbox" name="submode" onclick="showhidefield(this, 'hideablearea')"> 

자바 스크립트 :

function showhidefield(element, id) 
{ 
    var node = document.getElementById(id); 

    if (node) { 
    node.style.display = element.checked ? 'block' : 'none'; 
    } 
} 

Demo

함수에 대한 첫 번째 인수가 있습니다

당신은 현재의 요소를 참조 할 this를 사용하여이 ID없이 작동 할 수 있습니다 체크 박스 자체와 두 번째 인수는 표시하거나 숨길 요소의 ID입니다.

+0

이 문제는 페이지가로드되고 확인란이 선택된 상태이며 추가 필드가 표시됩니다. 체크하지 않는 한 디폴트가 아닌 쇼가 필요합니다 .... 그러면 블록을 변경하고 순서를 변경하지 않습니까? 도움을 주신 덕분에 – user2066907

+0

그러면'# hideablearea '에'style = "display : none;"'을 추가하고 checkbox 요소에서'checked = "checked"를 제거하십시오. @ user2066907 –

+0

최고! 그것은 매력처럼 작동 ... 감사합니다 – user2066907

1

체크 박스에 ID를 입력하고 getElementById을 사용하십시오. ID는 고유해야하므로 다른 방법보다 더 안정적입니다.

+0

그래서 입력 필드에 id = "submode"를 추가하고 – user2066907

+0

내 경우에 getElementById를 사용하는 방법을 보여 줄 수 있습니까? 고맙습니다 ~ – user2066907