2012-10-29 3 views
-2

CSS가 비활성화되었지만 JavaScript가 아닌 경우 요소를 숨기려면 어떻게합니까 (필자의 경우 파일 입력 필드)? CSS를 사용할 때 다음 중 어느 것도, 그들이 비록 모든 작업을 작동하지 않습니다 :CSS가없는 요소 숨기기

element.style.display = 'none'; 
element.style.visibility = 'hidden'; 
element.hidden = 'hidden'; 
element.hidden = true; 
element.setAttribute('hidden','hidden'); 
element.setAttribute('hidden',true); 

CSS를 사용할 수있을 때까지 내가 아는 한, 숨길 수있는 유일한 방법은, 숨겨진 입력 필드입니다. 어쩌면 그것은 해결책으로 이어질 수 있습니다. 어떤 도움을 주셔서 감사합니다, 감사합니다!

+2

"CSS가 비활성화 된 경우"--- HTML이 비활성화 된 경우 어떻게해야합니까? 그런 이상한 요구 사항에 대한 진정한 이유가 있습니까? – zerkms

+1

실용적인 이유가 아니라 도전 같은 종류입니다. – Sophivorus

+0

나는이 질문이 실제로 유용하다고 생각하지 않기 때문에 그것이 진실이고 그것이 생산에 가지 않기를 바란다 :-) – zerkms

답변

0

당신은 DOM에서 요소를 삭제할 수 있습니다

element.parentNode.removeChild(element); 

당신이 나중에 복원하려는 경우 HTML 코드 (또는 요소에 대한 참조 자체) 변수에 저장할 수 있습니다. 양식 필드의 경우 값을 저장 한 다음 요소 자체를 복원 한 후 값을 복원해야 할 수도 있습니다.

hidden HTML5-attribute 브라우저의 지원 범위가 너무 넓지는 않지만 (HTML 자체에서 특성 자체가 삭제 될 수 있음) 사용하는 것도 고려해보십시오.

element.type = "hidden"; 

을하지만 일부 IE 버전에서 작동하지 않습니다 유의하십시오 그것이 input 요소이기 때문에

+0

복원하는 것이 까다로울 수 있습니다. – zerkms

+0

@zerkms 답변을 업데이트했습니다. –

+0

나는 그것을 보았다. 내용 만 저장하면 실제로 복원 할 위치 *를 알 수 없습니다. – zerkms

1

, 당신은 type 숨겨진으로 변경 될 수 있습니다. 이 경우 새 요소를 만들고 hidden 유형을 지정하고 바꿔야한다고 생각합니다.

DEMO :http://jsfiddle.net/gLvRz/

0

나는 당신이 그 안에 뭔가를 숨길 수있는 AREA 요소를 악용 할 수도있을 것 같군요.

//hide element 
var hiddenContainer = document.createElement("AREA"); 
element.parentNode.insertBefore(hiddenContainer, element); 
hiddenContainer.appendChild(element); 

//show element 
hiddenContainer.parentNode.insertBefore(element, hiddenContainer);