오늘은 몰랐으면 내일은 알면 된다

[Javascript&jQuery] 요소의 scrollHeight 구하기&배열 최대/최소값 본문

Front/JavaScript

[Javascript&jQuery] 요소의 scrollHeight 구하기&배열 최대/최소값

마스터피쓰 2021. 3. 10. 10:52

두가지의 textarea의 scrollHeight를 비교해서 긴쪽에 맞춰줘야 할 일이 생겼다.

하지만 향후 늘어날 수도 있기 때문에 여러개의 textarea를 비교해서 맞춰주는 방식을 알아보도록 하자.

 

요소의 scrollHeight를 구하는 방식 자체는 아래와 같다.

 

$(selector).prop('scrollHeight');

 

javascript를 활용해서 최대, 최소를 구하는 방식은 아래를 참고했다.

programmingsummaries.tistory.com/108

 

[JavaScript] 배열 요소 중 최대값 최소값 찾기

숫자로 이루어진 배열 내에서 가장 큰 숫자 혹은 가장 작은 숫자를 찾아야 할 경우 FOR문을 돌리는 단순한 방법 외에 두 가지 방법이 더 존재한다. 먼저 Math 객체를 사용하는 방법이 있다. Math 객

programmingsummaries.tistory.com

 

 

아래의 세가지 요소중 scrollHeight가 가장 큰값/작은값에 맞춰서 높이를 변경해보도록 하자.

아무것도 안해준 상태

 

<script type="text/javascript">
	$(function(){
		var txtArea = $('textarea');
		var heightArr = [];
		
		$.each(txtArea, function(index, item){
			heightArr.push($(item).prop('scrollHeight'));
		});
		
		var max = heightArr.reduce(function (prev, curr) { 
			return prev > curr ? prev:curr;
		});
		
		var min = heightArr.reduce(function (prev, curr) { 
			return prev > curr ? curr:prev;
		});
		
		$(txtArea).height(max);
	});
</script>

 

scrollHeight 값들이 들어있는 배열을 만들고, reduce함수를 사용해서 구해주었다.

 

 

max일때
min일때

 

reduce의 동작방식에 대해서는 아래의 글을 한번 읽어보도록 하자.

developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

 

Array.prototype.reduce() - JavaScript | MDN

Array.prototype.reduce() reduce() 메서드는 배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환합니다. The source for this interactive example is stored in a GitHub repository. If you'd

developer.mozilla.org