JS가 인터넷에서 숨겨진 요소의 너비와 높이를 얻는 몇 가지 방법이 있지만, 얻을 수없는 상황이있을 수 있습니다.
예를 들어:
<! docType html> <html lang = "en"> <head> <meta http-equiv = "content-type"content = "text/html; charset = utf-8"/> <title> 테스트 </title> </head> <body> <div id = "test"style = "display : none a a with a with the wine 모든 강과 바다는 강과 바다에 쏟아져 세상 사람들에게 주어집니다. </div> <div id = "test2"style = "display : none"> <div style = "display : none"> <div id = "test2_child"> 먼지를 편안하게하기에 충분한 와인 냄비가 있습니다. 모든 강과 바다는 강과 바다에 쏟아져 세상 사람들에게 주어집니다. </div> </div> </div> <div id = "test3"> <div> <div> <div id = "test3_child"> 먼지를 편안하게하기에 충분한 와인 냄비가 있습니다. 모든 강과 바다는 강과 바다에 쏟아져 세상 사람들에게 주어집니다. </div> </div> </div> </div> </body> </html>
테스트를 얻을 수 있지만 test2_child를 얻을 수 없습니다. 이 상황을 고려하여, 나는 그것을 직접 해결하는 방법을 썼습니다.
해결책:
1. 자신을 포함하여 신체 요소까지 모든 숨겨진 조상 요소를 요소 (너비와 높이를 찍음)를 가져옵니다.
2. 모든 숨겨진 요소의 디스플레이 및 가시성 속성을 가져 와서 저장하십시오.
3. 모든 숨겨진 요소를 가시성으로 설정하십시오 : 숨겨진; 디스플레이 : 블록! 중요; (중요한 이유는 우선 순위가 충분하지 않다는 것입니다).
4. 요소의 너비와 높이를 얻으십시오 (너비와 높이를 가져 가십시오).
5. 모든 숨겨진 요소의 스타일의 디스플레이 및 가시성 속성을 복원하십시오.
6. 요소 너비와 높이 값을 반환합니다.
코드 구현 :
함수 getsize (id) {var 너비, 높이, elem = docum getnonenode (elem); // 다층 디스플레이의 요소를 가져옵니다 : 없음; setNodestyle (); 너비 = elem.clientWidth; 높이 = elem.ClientHeight; Resumenodestyle (); return {너비 : 너비, 높이 : 높이} 함수 getNonEnode (노드) {var display = getStyles (노드) .getPropertyValue ( 'display'), tagname = node.nodename.tolowscase (); if (display! = 'none'&& tagname! = 'body') {getnonenode (node.parentNode); } else {nonenodes.push (노드); if (tagname! = 'body') getNoneNode (node.parentNode); }} //이 메소드는 최종 표시 속성 설정이 있는지 여부를 얻을 수 있으며 Style.Display가 될 수 없습니다. 함수 getStyles (elem) {// support : IE <= 11+, Firefox <= 30+ ( #15098, #14150) // 즉, 팝업에서 생성 된 요소를 던지십시오 // ff 그 한도는 "defaultView.getComputedStyle"var view = elem.wenerDocument.defaultView; if (! view ||! view.opener) {view = 창; } return view.getComputedStyle (elem); }; 함수 setNodestyle () {var i = 0; for (; i <nonenodes.length; i ++) {var visiability = nonenodes [i] .style.visibility, display = noneenodes [i] .style.display, style = noneodes [i] .getAttribute ( "style"); // 다른 디스플레이 스타일을 덮어 쓰기 Noneodes [i] .setAttribute ( "Style", "가시성 : 숨겨진; 디스플레이 : 블록! 중요;" + 스타일); Nodestyle [i] = {가시성 : 가시성, 디스플레이 : display}}} 함수 reumenodestyle () {var i = 0; for (; i <nonenodes.length; i ++) {nonenodes [i] .style.visibility = nodestyle [i] .Visibility; Nonenodes [i] .style.display = nodestyle [i] .display; }}}예제 시연 :
var testsize = getsize ( 'test'); console.log ( "test-> width :" + testsize.width + "height :" + testsize.height); var test2childsize2 = getsize ( 'test2_child'); console.log ( "test2child2-> width :" + test2childsize2.width + ":" + " test2childsize2.height); var test3childsize = getsize ( 'test3_child'); console.log ( "test3_child-> width :" + test3childsize.width + "높이 :" + test3childsize.height); // 인쇄 값은 다음과 같습니다. 테스트-> 너비 : 417 높이 : 18test2Child2-> 너비 : 417 높이 : 18Test3_Child-> 너비 : 417 높이 : 18
참고 :
1. 모든 숨겨진 조상 요소를 보여주고 요소의 너비와 높이 값을 얻습니다. 경우에 따라 값을 얻는 것이 잘못 될 수 있습니다.
추신 : 그러나 이것에 대해 걱정하지 마십시오. 실제로 문제가 발생하면 방법을 해킹하십시오.
2. 숨겨진 조상 요소 디스플레이 및 가시성 속성이 나중에 영향을 미치지 않고 다시 설정 해야하는 이유.
3. 또한 GetStyles 메소드는 jQuery 소스 코드에서 추출 되므로이 메소드는 최종 디스플레이 속성 설정이 있는지 여부를 얻을 수 있습니다.
추신 : Style.Display에서 얻을 수 없습니다.
JS에서 숨겨진 요소를 얻는 위의 방법은 편집기가 공유하는 모든 내용입니다. 나는 그것이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.