2009-11-25 1 views
0

저는 최근에 제 페이지에 자바 스크립트를 많이 추가했지만 고전적인 seat-of-the-pants 패션으로이 모든 것을 배웠습니다. 내 페이지가 무언가를하고 싶을 때, 나는 원하는 결과를 얻을 때까지 google과 실험을합니다.방화 광볼 터는 객체의 자바 스크립트 이름을 말해 줄 수 있습니까?

자주 활성화/비활성화, 숨기기, 표시 등의 객체를 내 페이지에 포함하고 있지만 자바 스크립트에 대한 엄격한 소개를 놓친 경우 - 이러한 것들의 이름이 어떻게되는지 잘 모릅니다. 방화범이 풀린 물체를 클릭하여 물체의 완전한 이름을보기를 기대하지만 기쁨을 얻지는 못합니다. form.button.value = "something"과 같은 것을 할 수 있어야하고, 그 객체의 이름을 알아야합니다.

아이디어가 있으십니까?

감사합니다.

+0

자바 스크립트에서, 심지어 기능은 익명이 될 수 있습니다. 어떤 코드를 사용하여 문제가 발생했는지 설명 할 수 있습니까? – Nosredna

답변

1

하다니 당신은 자바 스크립트 코드를 실행하면 현재 범위에있는 모든 지역 변수를 가지고 그래서 당신은 다음과 같은 코드가 있다면 :

var myObject = New Object(); 
myObject.Person = New Object(); 
myObject.Person.Name = "Mark"; 
myObject.Person.Gender = "Male"; 
myObject.Name = "object1"; 

이 ... 루트 객체 인 myObject 것을, 점 표기법을 통해 하위 오브젝트를 참조하십시오.

그러나 브라우저에서 DOM을 구현 한 덕분에 this 키워드를 사용하여 window 개체를 상속 할 수 있습니다. 사실 단순한 상황, 즉 클로저를 사용하지 않을 때 this 키워드를 그대로 둘 수 있습니다. 따라서 함수 이름을 사용하여 최상위 레벨에서 Javascript 함수에 액세스 할 수 있습니다.

원하는 요소처럼 원하는 요소에 액세스하려면 DOM을 배우고 제안한 구문 (예 : 1990 년 Javascript와 같은)을 사용하지 않아야합니다. 알아 두어야 할 루트 요소는 document 속성을 통해 액세스되는 HTMLDocument 개체입니다. 문서 요소의 getElementById 메서드를 사용하여 특정 Id (Name 아님) 특성이있는 요소를 찾을 수 있습니다. 물론 요소를 처음부터 고유 한 ID로 지정하면 도움이됩니다. childNodes 컬렉션을 재귀 적으로 사용하여 원하는 것을 찾을 때까지 요소를 수동으로 반복 할 수도 있습니다. 또는 실제로 ID를 제공 할 수없는 경우 getElementsByTagName 메서드를 사용할 수도 있습니다.이 메서드는 DOM의 모든 요소에 연결됩니다.

예 :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> 
<HTML> 
<HEAD> 
    <TITLE></TITLE> 
    <META NAME="Generator" CONTENT="TextPad 4.6"> 
    <META NAME="Author" CONTENT="?"> 
    <META NAME="Keywords" CONTENT="?"> 
    <META NAME="Description" CONTENT="?"> 
    <SCRIPT LANGUAGE="Javascript"> 
     <!-- 

     function DoSummat() 
     { 
      var divInside = document.getElementById("Inside"); 
      divInside.textContent = "This text will appear inside."; 
     } 

     //--> 
    </SCRIPT> 
</HEAD> 

<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000" VLINK="#800000" ALINK="#FF00FF" BACKGROUND="?"> 
<FORM> 
    <INPUT TYPE="BUTTON" onclick="DoSummat();" NAME="MyButton" VALUE="Press Me"> 
</FORM> 
<DIV ID="Outside"> 
    <DIV ID="Middle"> 
     <DIV ID="Inside"></DIV> 
    </DIV> 
</DIV> 
</BODY> 
</HTML> 
0

질문이 매우 모호해서 필요한 답변을 드릴 수 없습니다.

Object은 "활성화"/ "비활성화"할 수 없으며 "이름"이 없습니다 (해당하는 경우 name 속성을 가질 수 있습니다).

는 예를 들어, 주어진 :

var foo = {}; 

foo는 목적 값이 일어나는 변수이다. 객체는 변수가 아닙니다 ("이름"을 가진 객체). 을 감안할 때 :

bar = foo; foo = null; 

foo 지금 null하고 열린 푸 개체가 지금 bar로 저장됩니다.

0

당신은 그렇게 할 수 없습니다. 변수 이름은 변수에 연결되지 않으며 함수간에 전달되지 않습니다.

물론
function printVar(name) { 
    console.log(name + ": " + window[name]); 
} 

는이 문제 것들을 많은있다 : 당신이 할 수있는 최선 문자열을 받아 변수에 다시를 해결하기 위해 함수를 작성합니다. 의 printf 스타일의 구문을 사용하여

console.log("foo"); 
console.log(foo); 

또는 : 나는 두 로깅 호출을 권 해드립니다

console.log("foo: %o", foo); 
1

요소는 일반적으로 id 속성을 사용하여 식별됩니다. 예 :

<input type="submit" id="saveButton" value="Save" /> 

당신은 요소에 대한 참조를 얻기 위해 getElementById 방법을 사용할 수 있습니다 :

var b = document.getElementById('saveButton'); 
b.value = 'Saving...'; 
1

을 당신이 form.button.value="something" 예를 들어, 당신이 HTML 객체를 제어 할 같은데요했다 글쎄 때문이다. ID를 할당 할 수 있습니다 (예 : < id = "my_form"...). 그런 다음 getElementById()라는 함수가 호출 될 때 JS의 ID로 요소를 가져옵니다.

document.getElementById('my_form').button.value = 'something';