2011-08-23 5 views
1

setAttribute를 사용하여 select 태그의 이름을 oldName에서 newName으로 변경하려고 시도했지만 페이지를로드 한 다음 소스를 보면 oldName이 남아 있습니다. 궁극적으로 "onchange", "function();"속성을 추가하려고했습니다. 하지만 나는 태그의 이름을 바꾸기 위해 JS를 얻을조차 수 없다. 어떤 도움을 주시면 감사하겠습니다. 미리 감사드립니다. 필자는 Mac OS X에서 Chrome, FF 및 Safari를 테스트했습니다.JavaScript setAttribute not working

<html> 
<head> 
</head> 
<body> 
     <select name="oldName"> 
     <option value="0">Essay 1</option> 
     <option value="1">Essay 2</option> 
     <option value="2">Essay 3</option> 
     </select> 
<script type="text/javascript"> 
document.getElementsByTagName("select").item(0).setAttribute("name","newName"); 
</script> 
</body> 
</html> 
+2

소스가 변경되지 않으며 모든 js 변경 사항은 DOM 표현에서 수행됩니다. 변경 사항을 테스트하려면 firebug 또는 크롬 개발자 도구 – Einacio

+0

이 Chrome 13에서 제대로 작동합니다. [데모] (http://jsfiddle.net/CJjYH/) –

답변

-3

왜 클래스를 사용하지 않습니까? 이렇게 :

<script type="text/javascript"> 
$(function(){ 
    $('.example').attr('name','new'); 
}); 
</script> 


<select class="example" name="oldName"> 
<option value="0">Essay 1</option> 
<option value="1">Essay 2</option> 
<option value="2">Essay 3</option> 
</select> 
+0

jQuery의 기본 DOM 요소에는'.attr'이 없습니다. . 또한 함수 결과를 무언가로 설정하는 것도 의미가 없습니다. – pimvdb

+0

이것은 순수 JS와 jQuery 사이의 혼합처럼 보입니다. jQuery 객체가 없기 때문에 호출하려고하는 객체에 대해서는 'attr'이 존재하지 않습니다. @pimvdb가 지적했듯이 "newName"이라는 문자열을 함수에 할당하고 싶지는 않습니다. –

+0

동의 - 이것은 유효하지 않습니다. 게시하기 전에 답변에 사실 정보가 포함되어 있는지 확인하십시오. - 감사합니다! –

4

코드가 작동하면 이름이 변경됩니다. 소스를 볼 때 이름 변경이 표시되지 않습니다. 대신 개발 도구에서 생성 된 소스를 살펴보십시오. (Chrome에서 F12 시도).

소스보기는 소스가 서버에서 처음 다운로드되었을 때만 표시합니다. 개발 도구를 사용하면 페이지로드 후 DOM에 대한 변경 사항을 볼 수 있습니다.

+1

고마워요! 네가 옳아. 왜 나는 소스를 보는 것이 업데이트 된 버전을 보여줄 것이라고 생각하는지 모르겠습니다. – Usman

+0

@Usman 환영합니다 :) – Paulpro

0

"소스보기"를 사용하면 페이지의 HTML이 보이지 않으므로 브라우저가 페이지의 복사본을 가져 와서 소스를 표시합니다. 그렇게하면 javascript가 해석되지 않으므로 javascript로 작성한 문서의 변경 사항은 "소스보기"창에 반영되지 않습니다.

DOM 에 대한 변경 사항을 보려면 라이브를 사용하려면 Firebug (link)와 같은 개발 도구를 사용해야합니다. 물론 파이어 폭스 확장은 인터넷 익스플로러에서 운이 없다는 것을 의미한다. 개발자들이 종종 파이어 폭스를 개발 대상으로 삼아 모든 것이 합리적으로 실행되고 나서 Internet Explorer에 대해 걱정하는 이유이다.

Firebug Lite와 같은 IE에서 Firebug를위한 대체 도구가 있지만 기능 및 유틸리티와 거의 비슷합니다.