본문 바로가기

자바스크립트 JavaScript

마우스 올려놓는 동안 색이 변하는 텍스트를 만들어보자

  자바스크립트로 제목과 같은 기능을 구현해보자. 

핵심은 onmouseover, onmouseout 이벤트와 setInterval(), clearInterval() 메소드를 이용하는 것이다.

 

onmouseover는 지정된 태그영역 안에 마우스가 위치해있을 때 작동

onmouseout은 지정된 태그영역 바깥에 마우스가 위치해있을 때 작동

 

b = setInterval(x, a)

x()메소드를 0.00a초마다 호출하겠다는 뜻.

숫자값 b를 리턴한다.

 

clearInterval(b)

기능은 setInterval()의 정지

b는 setInterval()의 숫자값 b

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>색변경테스트</title>
</head>
<body>
<h1 id="test" style="font-size: 100px;" onmouseover="onOver()" onmouseout="onOut()">색변경 테스트</h1>

<script>
var rr = 0;
var gg = 0;
var bb = 0;
var cnt = 0;
var timer;

function changeColor()
{	
	var xx = document.getElementById("test");
	
	if(cnt==0)
	{
		if(rr<255)
		{
			rr+=5;
		}
		else if(gg<255)
		{
			gg+=5;
		}
		else
		{
			bb+=5;
			
			if(bb==255)
			{
				cnt=1;
			}
		}
	}
	else
	{
		if(rr>0)
		{
			rr-=5;
		}
		else if(gg>0)
		{
			gg-=5;
		}
		else
		{
			bb-=5;
			
			if(bb==0)
			{
				cnt=0;
			}
		}
	}
	xx.style.color = "rgb("+rr+","+gg+","+bb+")"
}

function onOver()
{
	timer = setInterval(changeColor,30);
}

function onOut()
{
	var xx = document.getElementById("test");
	
	clearInterval(timer);
	xx.style.color = "black";
	
	rr=0;
	gg=0;
	bb=0;
	cnt=0;
}
</script>
</body>
</html>

 

코드작성을 마치면서...

1. 색지정시 Math.random()메소드를 이용하면 더 다채롭다.

2. changeColor()메소드에서 무한루프를 이용해봤다. onmouseout이벤트가 동작하지 않았다.

3. xx변수를 사용하지 않으려고 각 메소드에 id값 매개변수 x를 이용해서 작성해봤다. 기능이 구현되지 않았다.

4. setInterval()메소드에서 소괄호()안에 들어가는 메소드는 소괄호()가 없다. (주의)