HTML에서 id와 name 속성의 차이점


답변:


625

name양식 제출에 데이터를 보낼 때 속성이 사용됩니다. 다른 컨트롤은 다르게 응답합니다. 예를 들어, id속성은 다르지만 동일한 라디오 버튼이 여러 개있을 수 있습니다 name. 제출되면 응답에 하나의 값 (선택한 단일 선택 단추) 만 있습니다.

물론, 그것보다 더 많은 것이 있지만, 올바른 방향으로 생각하게 할 것입니다.


당신이 그것에 대한 자세한 내용을 설명해 주시겠습니까?. 제출시 응답에 하나의 값이 있습니다-선택한 라디오 버튼.
NoviceToDotNet 2016 년

라디오 버튼 이외의 사용법이 있습니까 ?? 나는 그것 이외의 큰 차이가 있어야한다고 생각합니까 ???
Prageeth godage

28
@Prageeth : 차이점은 "이름"이 브라우저에서 서버로 전송되며 "id"와 다를 수 있다는 것입니다. 사람들이 그 차이를 원할 수있는 많은 이유가 있습니다. 예를 들어, 서버 측 언어 / 프레임 워크에는 제출 된 값에 특정 이름이 필요하지만 자바 스크립트는 ID가 완전히 다른 것으로 가장 잘 작동합니다.
존 피셔

29
매우 비공식적으로 말하면 id프론트 엔드 (CSS, JS)와 함께 작동하는 것이지만 name서버는 수신하고 처리 할 수 ​​있습니다. 이것이 기본적으로 Greeso의 답변입니다.
Saraph

2
: 그것은 말을 더 좋을 수도 이름 속성이있다 필요한 대신 ... 데이터를 보낼 때 : 이름 속성이되어 사용 데이터를 보낼 때 ... 누락 된 폼 데이터 이후 이름 속성이 전송되지 않습니다 (또는 참되지 않습니다 HTML 사양에 따라
처리됨

331

양식 제출시 발생 하는 또는 호출에 사용 된 식별자이므로 name양식 제어 (예 : <input><select>)에 대한 속성을 사용하십시오 .POSTGET

idCSS, JavaScript 또는 조각 식별자 로 특정 HTML 요소를 처리해야 할 때마다 속성을 사용하십시오 . 이름별로 요소를 검색 할 수도 있지만 ID로 검색하는 것이 더 간단하고 안정적 입니다.


2
이것은 매우 명확했다. 그렇다면 "이름"은 서버로 전송 된 "식별자"매개 변수를 나타내는 것입니다. 이 질문은 수락 된 답변에 의해 부분적으로 답변되지만 그러한 용어로 표현되지는 않습니다.
토머

5
@Thomas : 사이에 필요한 넥타이 없다 nameid전혀은. 식별자는 페이지에서 특정 HTML 요소를 고유하게 식별합니다. name반대로 HTML 양식 요소 의 속성은 고유하지 않아도되며 라디오 단추 나 여러 <form>요소가있는 페이지와 같이 고유하지 않아도됩니다 . 단일 HTML 요소에서 둘 다 사용되는 곳 name과 동일한 문자열을 사용하는 것이 일반적 id이지만 아무것도 수행하지 않습니다.
Warren Young

일부 HTML 마크 업을 해석 할 수있는 사용자 지정 텍스트 영역을 구현하고 있는데이 작업을 수행하기 위해 contentEditable div를 사용했습니다. 속성에 'name'속성을 추가하면 그대로 동작합니까?
yev

125

다음은 간단한 요약입니다.

  • idJavaScript를 통해 또는 CSS로 스타일이 지정된 Document Object Model을 통해 HTML 요소식별하는 데 사용됩니다 . id페이지 내에서 고유해야합니다.

  • nameform 요소에 해당 하며 서버에 다시 게시 된 내용을 식별합니다 .


27

이것을 참조하십시오 http://mindprod.com/jgloss/htmlforms.html#IDVSNAME

차이점이 뭐야? 짧은 대답은 둘 다 사용하고 걱정하지 마십시오. 그러나이 구피를 이해하려면 스키니가 있습니다.

id =는 다음과 같은 대상으로 사용됩니다 <some-element id="XXX"></some-element>.<a href="#XXX" .

name =은 양식에서 제출을 눌렀을 때 HTTP (HyperText Transfer Protocol) GET 또는 POST로 서버로 보내는 메시지의 필드 레이블을 지정하는 데에도 사용됩니다.

id =는 JavaScript 및 Java DOM (Document Object Model)에서 사용할 필드에 레이블을 지정합니다. name =의 이름은 양식 내에서 고유해야합니다. id =의 이름은 전체 문서 내에서 고유해야합니다.

서버가 동일한 문서의 다양한 양식 또는 위의 예와 동일한 양식의 다양한 단일 선택 단추에서 동일한 이름을 기대하기 때문에 name = 및 id = 이름이 다른 경우가 있습니다. id =는 고유해야합니다. 이름 =이 아니어야합니다.

JavaScript에는 고유 한 이름이 필요했지만 고유 한 name = 이름이없는 문서가 너무 많았 기 때문에 W3 사람들은 고유해야하는 id 태그를 발명했습니다. 불행히도 오래된 브라우저는 그것을 이해하지 못했습니다. 따라서 양식에 두 가지 명명 체계가 모두 필요합니다.

참고 : <a>HTML5 에서는 일부 태그의 속성 "name" 이 지원되지 않습니다.


2
약간 혼란스럽고 ... 어떤 점에서 잘못 생각합니다. 그렇지 않습니까? 매개 변수가 HTTP에 사용되므로 제출시 태그에 name중요합니다. <input><form>id

또한이 (등록되지 않은) 사용자는 자신의 페이지에 연결하고 있습니다 (자신의 프로필 링크는 mindprod.com/jgloss입니다 ). SO에 문제가 있는지 모르겠지만 다소 혼란 스 니펫이 있으면 부적절하다고 생각합니다.
zb226

23

내가 생각하고 사용하는 방법은 간단합니다.

신분증 는 CSS 및 JavaScript / jQuery에 사용됩니다 (페이지에서 고유해야 함)

name 은 HTML을 통해 양식을 제출할 때 PHP에서 양식 처리에 사용됩니다 (양식에서 고유해야 함-어느 정도 아래 의 의견 참조).


2
완전히 사실 은 아닙니다 . Name 속성은 단일 선택 단추를 연결할 수 있으므로 양식에서 고유하지 않아도됩니다.
Paul

4
또한 놀랍지 만 PHP는 세계에서 유일한 서버 언어는 아닙니다.
보다 선명하게

@seesharper-재미 있네요. 나는 심지어 당신을 투표했습니다! 글쎄, 그래, 그것은 나를 놀라게하지 않습니다 :)
Greeso

14

ID 태그-CSS에서 사용되며 고유 한 div, span 또는 기타 요소 인스턴스를 . Javascript DOM 모델 내에 표시되어 다양한 함수 호출로 액세스 할 수 있습니다.

필드의 이름 태그 -PHP / 서버 측 처리로 전달하려는 배열을 수행하지 않는 한 형식 마다 고유 합니다. Javascript를 통해 이름으로 액세스 할 수 있지만 DOM에 노드로 표시되지 않거나 일부 제한 사항이 적용될 수 있다고 생각합니다 (예를 들어 올바르게 호출하면 .innerHTML을 사용할 수 없음).


9
라디오 버튼 올바르게 작동하려면 동일한 이름을 공유 해야합니다 . 양식마다 고유하지 않습니다.
nickf September

내 실수. 명확히하기 위해, 텍스트 입력, 텍스트 영역 등의 경우 이름 태그를 사용하여이를 식별합니다. 고유하지 않아도됩니다.
Extrakun

12

일반적으로 name은 항상 id로 대체되는 것으로 가정합니다 . 이것은 어느 정도 사실이지만 실제로는 양식 필드와 프레임 이름 에는 해당 되지 않습니다 . 예를 들어, 양식 요소의 name경우이 속성을 사용하여 서버 측 프로그램으로 보낼 이름-값 쌍을 결정하고 제거해서는 안됩니다. Browsers do not use id in that manner. 안전을 위해 양식 요소에 name 및 id 속성을 사용할 수 있습니다. 따라서 다음과 같이 작성합니다.

<form id="myForm" name="myForm">
     <input type="text" id="userName" name="userName" />
</form>

호환성을 보장하기 위해 정의 된 이름과 id 속성 값이 일치하는 것이 좋습니다. 그러나 일부 태그, 특히 단일 선택 단추에는 고유하지 않은 이름 값이 있어야하지만 고유 한 id 값이 필요합니다. 다시 한 번, 이것은 id가 단순히 이름을 대체하는 것이 아니라는 것을 의미해야합니다. 그것들은 목적이 다릅니다. 또한 구식 접근 방식을 할인하지 마십시오. 현대 라이브러리를 자세히 살펴보면 때때로 성능 및 편의 목적으로 사용되는 구문 스타일을 보여줍니다. 목표는 항상 호환성을 선호해야합니다.

이제 대부분의 요소에서 이름 속성은 더 많은 유비쿼터스 id 속성을 위해 더 이상 사용되지 않습니다. 그러나, 일부 경우에, 특히 필드를 형성한다 ( <button>, <input>, <select>, 및 <textarea>)는 양식 제출의 이름 - 값 쌍을 설정해야하기 때문에 계속의 name 속성의 삶. 또한 프레임 및 링크와 같은 일부 요소는 이름 속성을 계속 사용할 수 있습니다. 이름 속성은 이러한 요소를 이름으로 검색하는 데 유용하기 때문입니다.

아이디와 이름 사이에는 분명한 차이가 있습니다. 종종 이름이 계속되면 값을 동일하게 설정할 수 있습니다. 그러나 id는 고유해야하며 경우에 따라 라디오 버튼을 생각해서는 안됩니다. 안타깝게도 마크 업 유효성 검사에 의해 파악 된 id 값의 고유성은 그다지 일관성이 없습니다. 브라우저에서의 CSS 구현은 id 값을 공유하는 객체의 스타일을 지정합니다. 따라서 런타임까지 JavaScript에 영향을 줄 수있는 마크 업 또는 스타일 오류를 포착하지 못할 수 있습니다.

이 책은 JavaScript- The Complete Reference by Thomas-Powell


4
ID 일치 이름을 만드는 습관을 갖지 않는 또 다른 이유 : 페이지에 동일한 데이터를 제출해야하는 두 가지 양식 (예 : 두 개의 검색 필드)이있을 수 있습니다. 이 경우 name에는 동일해야하며 (서버 측 코드는 제출 된 코드를 신경 쓰지 않음), id전체 페이지에서 고유해야하므로 달라야합니다.
IMSoP

10

name링크 대상에서는 더 이상 사용되지 않으며 HTML5에서는 유효하지 않습니다. 더 이상 최신 Firefox (v13)에서는 작동하지 않습니다. 변경 <a name="hello"><a id="hello">

타겟은 <a>태그 일 필요는 없으며 , 종종 더 깨끗한 코드 인 <p id="hello"> <h2 id="hello">등일 수 있습니다 .

다른 게시물에서 분명히 말했듯 name이 여전히 양식에 사용됩니다 (필요). META 태그에도 여전히 사용됩니다.


"링크 대상에 대해 이름이 사용되지 않습니다"대신 "링크 태그에 대해 이름이 사용되지 않습니다"를 의미합니까? 사실, 링크 대상은 iframe 일 수 있습니다. 해당 iframe에 name 속성을 지정하지 않으면 대상 속성이 링크에서 작동하지 않습니다. 그 행동은 여전히 ​​모든 브라우저에 적용되며 HTML5를 준수합니다.
yucer

여기 링크하는 방법을 알아 내려고 노력하고 닻을 당신이가는 곳의 마커 같이 당신이 "#something"의 URL이 끝이있을 때. 내가 4에서 html로 말할 수있는 가장 좋은 것은 <a name="something">이어야합니다. html 4에서는 <a name="something" id="something"> (일치)이고 html 5에서는 <a id="something">이지만 id는 무엇이든 "전역 속성"일 수 있습니다. 내가 알아낼 수없는 것은 id 외에도 추가 이름이 HTML 5의 <a>에서 허용 되는지 여부입니다 . ok 실험 w 내가 가진 설정에 관계없이 ...
FutureNerd

9
<form action="demo_form.asp">
<label for="male">Male</label>
<input type="radio" name="sex" id="male" value="male"><br>
<label for="female">Female</label>
<input type="radio" name="sex" id="female" value="female"><br>
<input type="submit" value="Submit">
</form>


6

name Vs id

이름

  • 요소의 이름 예를 들어 양식 제출에서 필드를 식별하기 위해 서버가 사용합니다.
  • 지원 요소는 <button>, <form>, <fieldset>, <iframe>, <input>, <keygen>, <object>, <output>, <select>, <textarea>, <map>, <meta>, <param>
  • 이름은 고유하지 않아도됩니다.

신분증

  • 특정 요소의 스타일을 지정하기 위해 CSS와 함께 사용되는 경우가 많습니다. 이 속성의 값은 고유해야합니다.
  • ID는 전역 속성 이며 모든 요소에 사용할 수 있지만 일부 요소에는 영향을 미치지 않을 수 있습니다.
  • 전체 문서에서 고유해야합니다.
  • 공백으로 구분 된 값을 허용하는 클래스 속성과 달리이 속성의 값에는 공백이 없어야합니다.
  • ASCII 문자 및 숫자, '_', '-'및 '.'을 제외한 문자 사용 HTML 4에서는 허용되지 않으므로 호환성 문제가 발생할 수 있습니다. HTML 5에서는 이러한 제한이 해제되었지만 ID는 호환성을 위해 문자로 시작해야합니다.

name스타일 요소에 사용되는 속성을 보았습니다 . 이것이 유효하지 않다고 생각합니까?
Synetech

5

양식 입력 요소의 ID는 요소 내에 포함 된 데이터와 관련이 없습니다. ID는 요소를 JavaScript 및 CSS와 연결하기위한 것입니다. 그러나 name 속성은 브라우저에서 서버로 전송 한 HTTP 요청에서 value 속성에 포함 된 데이터와 연관된 변수 이름으로 사용됩니다.

예를 들어 :

<form>
    <input type="text" name="user" value="bob">
    <input type="password" name="password" value="abcd1234">
</form>

양식이 제출되면 다음과 같이 양식 데이터가 HTTP 헤더에 포함됩니다.

ID 속성을 추가하면 HTTP 헤더의 내용이 변경되지 않습니다. CSS와 JavaScript로 쉽게 연결할 수 있습니다.


2

양식의 제출 방법을 사용하여 서버로 정보를 보내지 않고 (자바 대신 자바 스크립트를 사용하여), 이름 속성을 사용하여 추가 정보를 입력에 첨부 할 수 있습니다. 입력에 포함되어 있기 때문에 깔끔하게 보입니다.

이 비트는 현재 Firefox에서 여전히 작동하지만 나중에는 허용되지 않을 것이라고 생각합니다.

구식 방식으로 제출하지 않는 한 이름 값이 동일한 여러 입력 필드를 가질 수 있습니다.


1

개인적인 경험과 W3 Schools의 설명에 근거한 속성 :

ID는 전역 속성이며 HTML의 거의 모든 요소에 적용됩니다. 웹 페이지에서 요소를 고유하게 식별하는 데 사용되며 그 값은 주로 프론트 엔드에서 (일반적으로 JavaScript 또는 jQuery를 통해) 액세스됩니다.

name은 HTML의 특정 요소 (예 : 양식 요소)에 유용한 속성입니다. 그 값은 대부분 처리를 위해 백엔드로 전송됩니다.

https://www.w3schools.com/tags/ref_attributes.asp


0

아래는 id 속성의 흥미로운 사용법입니다. 태그 내에서 사용되며 경계 밖의 요소에 대한 양식을 식별하여 양식 내의 다른 필드에 포함되도록하는 데 사용됩니다.

 <form action="action_page.php" id="form1">
 First name: <input type="text" name="fname"><br>
 <input type="submit" value="Submit">
 </form>

 <p>The "Last name" field below is outside the form element, but still part of the form.</p>
 Last name: <input type="text" name="lname" form="form1">

0

Id : 1) 문서 객체 모델 (Javascript 또는 CSS 스타일)을 통해 HTML 요소를 식별하는 데 사용됩니다. 2) ID는 페이지 내에서 고유해야합니다.

이름은 양식 요소에 해당하며 서버에 다시 게시 된 내용을 식별합니다. 예 :

<form action="action_page.php" id="Myform">
 First name: <input type="text" name="FirstName"><br>
 <input type="submit" value="Submit">
 </form>

 <p>The "Last name" field below is outside the form element, but still part of the form.</p>
 Last name: <input type="text" name="LastName" form="Myform">

0

ID는 요소를 고유하게 식별하는 데 사용됩니다.

이름은 양식에 사용됩니다. 양식을 제출하더라도 이름을 지정하지 않으면 제출되지 않습니다. 따라서 양식 요소는 "get or push"와 같은 양식 메소드로 식별 할 이름이 필요합니다.

그리고 이름 속성을 가진 것만 나갑니다.


0

id당신이 요소를 읽을 수있는 ID를 사용할 수 있습니다 (자바 스크립트와 같은) 실제 코드를 쓰기 때문에 한 번, 요소에게 ID를 제공 할 것입니다. (가) name사용자가 요소의 이름을 볼 수 있도록 단지 이름이고, 그런 것 같아요.

예:

<h1 id="heading">text</h1>
<script>
  document.getElementById("heading"); //Reads the element that has the id "heading".
</script>
//You can also use something like this:
document.getElementById("heading").value; //Reads the value of the selected element.

도움이 되셨습니까? 문제가 있으면 알려주세요.


0

ID와 이름 사이에는 문자적인 차이가 없습니다.

name은 식별자이며 element의 value 속성에 포함 된 데이터와 연관된 변수 이름으로 브라우저에서 서버로 전송 된 http 요청에서 사용됩니다.

반면에 id는 브라우저, 클라이언트 측 및 JavaScript의 고유 식별자이므로 양식에는 id가 필요하지만 요소에는 이름이 필요합니다.

id는 고유 한 요소에 속성을 추가 할 때보다 구체적으로 사용됩니다 .DOM 메서드에서, Id는 작업을 수행하려는 특정 요소를 참조하기 위해 Javascript에서 사용됩니다.

예를 들면 다음과 같습니다.

<html>
<body>

<h1 id="demo"></h1>

<script>
document.getElementById("demo").innerHTML = "Hello World!";
</script>
</body>
</html>

name 속성으로도 같은 작업을 수행 할 수 있지만 입력 태그 또는 선택 태그와 같은 작은 양식 요소의 경우 form 및 name에 id를 사용하는 것이 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.