Programming language/Javascript,jQuery

[jQuery]문자열로 함수 호출하기

  • -
반응형

스크립트 함수를 실행하는 방법은 다양하다.

버튼을 클릭한다거나, 페이지가 로드되는 경우 등, 우리는 이벤트가 발생한 이후이거나 또는 이전인 경우. 원하는 경우에 함수를 실행시킬 수 있다.

 

- 버튼을 클릭했을 때 함수 실행

<!DOCTYPE html>
<html>
<head>
<title>Test WEB</title>
<script>
function callFunction() {

	alert("함수 실행");

}
</script>
</head>
<body>
	<form>
		<button type="button" onclick="callFunction()">TEST함수실행</button>
	</form>
</body>

- html 페이지가 화면에 뿌려진 이후 함수 실행

<!DOCTYPE html>
<html>
<head>
<title>Test WEB</title>
<script>
function callFunction() {

	alert("함수 실행");

}

$(document).ready(function() {
	callFunction();
});
</script>
</head>
<body>
	<form>
		<button type="button" onclick="callFunction()">TEST함수실행</button>
	</form>
</body>

 

이처럼 스크립트에서 함수는 함수의 이름을 호출함으로써 실행이 가능하다.

그런데 최근에 새롭게 알게된 내용이 있다.

문자열로 된 함수명을 인자값으로 받아 함수를 실행할 수 있었다. fnct1이라는 함수가 있다고 했을 때, fnct1라는 문자열을 인자값으로 받아 함수를 호출하는 것이다.

 

아래 코드를 보면 두 개의 버튼에서 클릭시 각 인자값을 태워 callFunction 함수를 호출하고 있c다.

<!DOCTYPE html>
<html>
<head>
<title>Test WEB</title>
<script>
function callFunction(val) {

	alert(val);
	alert("함수 실행");

}

function fnct1() {

	alert("fnct1 함수 실행");

}

function fnct2() {

	alert("fnct2 함수 실행");

}
</script>
</head>
<body>
  <form>
    <button type="button" onclick="callFunction('fnct1')">TEST함수실행1</button>
    <button type="button" onclick="callFunction('fnct2')">TEST함수실행2</button>
  </form>
</body>

 

callFunction에서 인자값을 받아 해당 함수를 실행시킬 수 있는 방법이 있다.

바로 window[함수명](인자값); 요 함수를 이용하면 된다.

인자값도 보낼 수 있으니 정말 신기하다....

<!DOCTYPE html>
<html>
<head>
<title>Test WEB</title>
<script>
function callFunction(val) {

	alert(val);
	window[val]();
	alert("함수 실행");

}

function fnct1() {

	alert("fnct1 함수 실행");

}

function fnct2() {

	alert("fnct2 함수 실행");

}
</script>
</head>
<body>
  <form>
    <button type="button" onclick="callFunction('fnct1')">TEST함수실행1</button>
    <button type="button" onclick="callFunction('fnct2')">TEST함수실행2</button>
  </form>
</body>

 

 

참고

https://stackoverflow.com/questions/359788/how-to-execute-a-javascript-function-when-i-have-its-name-as-a-string/359910#359910

 

 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.