자바스크립트에 함수인자는 다른변수와 다른가요?

sadrove의 이미지

function view_del(){
	test.style.visibility = "visible";
}

test라는 div태그가 hidden으로 선언되어 있습니다.
위 함수를 호출하면 당연히 test 라는 div 태그가 화면에 나타납니다.
그런데 이상하게 함수 호출시 num에 "test"라는 값으로 넘겨 주고.. 코드를 아래와 같이 고치면 에러가 납니다.

function view_del(num){
	alert(num);
	num.style.visibility = "visible";
}

당연히 alert(num);으로 나타나는 메시지는 test 라고 정확히 찍힙니다.
똑같은 건데 왜 에러가 날까요?..
ㅠ.ㅠ....
neogeo의 이미지

자바스크립 이전에 대부분의 언어가 저런방식의 code 가 될리가 없습니다.

위의 함수가 되는것도 사실 말이 안되야 합니다.

test 가 전역변수식으로 선언이 되어있지 않은이상..

<div id="test"> 라고 하셨다고 가정하면

test 라는 div object 가 있다고 생각하시고 거기에 접근하는게

단순히 변수에 "test" 란 값을 넣어서 접근한다고 생각하시면

전혀 될리가 없습니다.

var num = "test";

라고 선언하고

num 의 member 에 접근하면 당연히 일반적인 string object ( java script 에선 그냥 변수 object 겠지요.. ) 가 될 수 밖에 없습니다.

특정 html eliment 의 object 로 접근하려면 ie 나 요즘 파폭 , 모질라에서 지원 하는 " getElementById " 라는 method 를 사용하십시오. ( <div id="test" > 로 선언되었을경우 )

즉 2번째함수에서는

var test_obj = document.getElementbyId(num);

을 통해 test_obj 를 얻어낸후 사용하셔야 합니다.

<div name="test"> 라고 코딩을 하셨다면

일반적으로 <html> 구조에 따라 접근을 해주셔야 할껍니다.

document["test"] 로 접근이 되던가

그냥 test 로 접근이 되는 경우도 있습니다만,

안될수도 있기때문에 요즘은 id 로 unique 하게 설정해주는게

( 사실 id 자체가 표준은 아니지만.... ) 좋겠습니다.

여담으로 1번 함수에서 alert (test) 해보시면 object 라고 찍힐겁니다.

제대로 객체에 접근이 되었다면

alert(test.id) 혹은 alert(test.name) 으로 찍어봐야 정확하겠지요.

Neogeo - Future is Now.

sadrove의 이미지

아...제가 너무 바보같았군요...ㅠ.ㅠ..
감사합니다..

sadrove의 이미지

죄송하지만... 하다가 잘 안되서 다시 질문드립니다..
<div id="test"> 를 실제로는 어떤식이냐면..
루프문 안에 div 태그가 들어가 있습니다..
루프가 계속 반복되니까 div의 id가 계속 동일한 값이 들어가길래..
이름을 구분하기 위해서
<div id="div_<?=$num?>">
이런식으로 작성했었습니다...
올바른 방법 같지 않은데..
이럴 경우엔 어떤식으로 id 값을 줄 수 있을까요..?..
부탁드립니다...

1day1의 이미지

var test_obj = document.getElementbyId("div_" + num);
이런식으로 하면 되지 않을까요?

F/OSS 가 함께하길..