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

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 가 함께하길..

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.