객체

2010-04-06 3 views
0

이 내 자바 스크립트 코드로 요소의 이름을 받기. 요소의 이름을 변경하기 위해 요소의 이름을 함수에 전달하는 방법 빠른 수정을 위해객체

답변

7

:

var element = document.all[name].value; 

그러나 명심이 값이 아닌 요소 자체를 가져옵니다. 요소를 얻으려면, 다음 값을 변경하십시오

var element = document.all[name]; 
element.value = 'whee'; 

또한, 대신 document.all의 요소에 액세스하기 위해 다른 방법을 사용하는 것이 좋습니다. document.getElementById() 기능이있는 이름 대신 ID를 사용하십시오. 이 JavaScript best practices 목록을 참조하십시오.

Peter Bailey points out in his answer으로 많은 HTML 요소가 같은 이름을 가질 수 있습니다. 이것은 document.getElementById()이 바람직한 이유 중 하나입니다. 요소 ID는 고유 한 ID입니다 (유효한 HTML에서는 물론).

+1

좋은 대답. ID를 사용하는 것이 좋습니다. 그런 다음 document.getElementById (id);를 수행 할 수 있습니다. 훨씬 더 믿을 만하다. – Zoidberg

+0

@Zoidberg : 네가 주석을 달아 준 것처럼 네가 내 대답에 통합하고있다. :-) – Cameron

2

"이름"으로 "이름 속성"을 의미하는 경우 이름이 HTML 문서에 고유하지 않다는 것을 알아야합니다. 그들은 문맥이 필요합니다.

document.all을 사용할 수 있지만 비표준이며 IE에서만 작동합니다. 더 많은 브라우저 간 친화적 인 메커니즘을 사용하는 것이 더 나을 것입니다.

일반적으로 이름 속성은 <input/><select> 요소와 같이 양식의 요소에 속합니다. 이러한 요소의 이름은 DOM에 <form>elements 속성의 속성으로 표시됩니다.

양식의 DOM 개체에 액세스 할 수 있으면 요소의 DOM 개체에도 액세스 할 수 있습니다.

<form id="foo"> 
    <input type="text" name="test" /> 
</form> 

<span onclick="change('foo', 'test');">Change Value</span> 

<script type="text/javascript"> 

function change(formId, elementName) 
{ 
    // Get the form's DOM object 
    var f = document.getElementById(formId); 

    // Get the element's DOM object 
    var element = f.elements[elementName]; 

    // Modify the element's value property 
    element.value = 'Hello World'; 

    // Note, the above 3 lines can be refactored to this 
    // document.getElementById(formId).elements[elementName].value = 'Hello World'; 
} 

</script> 
+0

'document.all'도 Opera에서 작동하지만, 가능하다면 거의 사용해서는 안된다는 것에 동의한다. 언제나 그렇다). – Cameron