898 Stimmen

Unterschied zwischen den Attributen id und name in HTML

Was ist der Unterschied zwischen dem id y name Eigenschaften? Sie scheinen beide dem gleichen Zweck zu dienen, nämlich eine Kennung zu liefern.

Ich würde gerne wissen (insbesondere im Hinblick auf HTML-Formulare), ob die Verwendung beider Formulare aus irgendwelchen Gründen notwendig oder empfehlenswert ist.

12 Stimmen

Es gibt einen sehr guten Thread zu diesem Thema unter stackoverflow.com/questions/7470268/html-eingabe-name-vs-id

0 Stimmen

Die umfassendste Antwort lautet Antwort von Farhan Shirgill Ansari (was nichts über seine Richtigkeit aussagt).

14voto

Im Allgemeinen wird davon ausgegangen, dass name wird immer durch id ersetzt . Das stimmt bis zu einem gewissen Grad, aber nicht für Formularfelder und Rahmennamen praktisch gesehen. Bei Formularelementen zum Beispiel ist die Name Attribut wird verwendet, um die Name-Wert-Paare, die an ein serverseitiges Programm gesendet werden und sollte nicht abgeschafft werden. Browser verwenden id nicht auf diese Weise . Um auf Nummer sicher zu gehen, können Sie die Name y id Attribute auf Formularelementen. Wir würden also das Folgende schreiben:

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

Um die Kompatibilität zu gewährleisten, müssen passende Name y id Attributwerte, wenn beide definiert sind, ist eine gute Idee. Seien Sie jedoch vorsichtig - einige Tags, insbesondere Optionsschaltflächen, müssen nicht eindeutige Name Werte, sondern erfordern eindeutige id-Werte.

Auch hier sollte darauf hingewiesen werden, dass id ist nicht einfach ein Ersatz für Name ; sie haben einen anderen Zweck. Darüber hinaus sollten Sie den Ansatz des alten Stils nicht außer Acht lassen. Ein tiefer Blick in moderne Bibliotheken zeigt, dass dieser Syntaxstil zuweilen aus Gründen der Leistung und der Vereinfachung verwendet wird. Ihr Ziel sollte immer zugunsten der Kompatibilität sein.

Bei den meisten Elementen ist die Name Attribut wurde zugunsten des allgegenwärtigen id-Attributs veraltet. In einigen Fällen, insbesondere bei Formularfeldern ( <button> , <input> , <select> y <textarea> ), die Name Attribut bleibt bestehen, da es weiterhin erforderlich ist, um das Name-Wert-Paar für die Formularübermittlung festzulegen. Außerdem stellen wir fest, dass einige Elemente, vor allem Frames und Links, weiterhin das Name Attribut, da es oft nützlich ist, um diese Elemente anhand ihres Namens abzurufen.

Es gibt eine klare Unterscheidung zwischen id y Name . Sehr oft, wenn Name weitergeht, können wir die Werte gleich setzen. Allerdings, id muss eindeutig sein, und Name in manchen Fällen auch nicht - denken Sie an Optionsfelder. Leider ist die Einzigartigkeit von id Werte zwar von der Auszeichnungsvalidierung erfasst werden, aber nicht so konsistent sind, wie sie sein sollten. Die CSS-Implementierung in Browsern formatiert Objekte, die ein id Wert; daher können wir Markup- oder Stilfehler, die unser JavaScript beeinträchtigen könnten, erst zur Laufzeit erkennen.

Dies stammt aus dem Buch JavaScript - Die vollständige Referenz von Thomas-Powell.

5 Stimmen

Ein weiterer Grund, sich nicht daran zu gewöhnen, dass die ID mit dem Namen übereinstimmt: Sie haben vielleicht zwei Formulare auf einer Seite, die dieselben Daten übermitteln müssen (z. B. zwei Suchfelder). In diesem Fall muss die name sollten gleich sein (der serverseitige Code kümmert sich nicht darum, welcher übermittelt wurde), aber die id muss unterschiedlich sein (weil sie auf der gesamten Seite eindeutig sein muss).

13voto

Hongtao Punkte 177
<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>

3 Stimmen

Eine Erklärung wäre angebracht. Z. B.: Was ist die Idee/der Sinn? Die Frage war "Was ist der Unterschied zwischen den Attributen id und name?" . Können Sie das näher erläutern? Bitte antworten Sie bis Bearbeitung (Änderung) Ihrer Antwort , nicht hier in den Kommentaren ( ohne "Bearbeiten:", "Aktualisieren:" oder ähnlich - die Antwort sollte so aussehen, als wäre sie heute geschrieben worden).

10voto

Subodh Ghulaxe Punkte 17873

Name vs. id


Name

  • Name des Elements. Wird zum Beispiel vom Server verwendet, um die Felder in Formularen zu identifizieren.
  • Unterstützende Elemente sind <button> , <form> , <fieldset> , <iframe> , <input> , <keygen> , <object> , <output> , <select> , <textarea> , <map> , <meta> y <param>
  • Der Name muss nicht eindeutig sein.

_id_

  • Wird oft mit CSS verwendet, um ein bestimmtes Element zu gestalten. Der Wert dieses Attributs muss eindeutig sein.
  • Id ist eine globales Attribut . Globale Attribute können für alle Elemente verwendet werden, auch wenn die Attribute bei einigen Elementen keine Wirkung haben.
  • Muss im gesamten Dokument eindeutig sein.
  • Der Wert dieses Attributs darf keine Leerzeichen enthalten, im Gegensatz zu dem Attribut class, das durch Leerzeichen getrennte Werte zulässt.
  • Die Verwendung von Zeichen außer ASCII-Buchstaben und Ziffern, '_', '-' und '.' kann zu Kompatibilitätsproblemen führen, da sie in HTML 4 nicht erlaubt waren. Obwohl diese Einschränkung in HTML 5 aufgehoben wurde, sollte eine ID mit einem Buchstaben beginnen aus Kompatibilitätsgründen mit einem Buchstaben beginnen.

0 Stimmen

Ich habe gesehen name Attribute, die in Stilelementen verwendet werden. Ich nehme an, dies ist ungültig?

10voto

Bonny Punkte 116
<body>
<form action="">
    <label for="username">Username</label>
    <input type="text" id="username" name="username">
    <button>Submit!</button>
</form>
</body>

Wie wir hier sehen können, sind die Elemente "id" und "for" miteinander verbunden. Wenn Sie auf die Beschriftung (Benutzername) klicken, wird das Eingabefeld hervorgehoben (dies ist nützlich für mobile Benutzer und wird als gute Praxis angesehen).

Andererseits ist das Element "Name" beim Absenden des Formulars nützlich. Was auch immer Sie in das Eingabefeld eingeben, es wird in der URL angezeigt. Bitte sehen Sie sich das beigefügte Bild an.

Image of URL

9voto

user1454923 Punkte 99

name ist für Linkziele veraltet und in HTML5 ungültig. Es funktioniert nicht mehr, zumindest im neuesten Firefox (v13). ändern <a name="hello"> a <a id="hello"> .

Das Ziel muss nicht unbedingt ein <a> Tag. Es kann sein <p id="hello" > oder <h2 id="hello"> usw., was oft einen saubereren Code ergibt.

Wie andere Beiträge deutlich sagen, name wird immer noch in Formularen verwendet (benötigt). Es wird auch immer noch in META-Tags verwendet.

0 Stimmen

Meinen Sie "Name ist für Link-Tags veraltet" anstelle von "Name ist für Link-Ziele veraltet"? In der Tat kann das Link-Ziel ein iframe sein. Wenn Sie das Attribut name für diesen iframe nicht angeben, funktioniert das Attribut target für den Link nicht. Dieser Behaivor bleibt für alle Browser erhalten und ist HTML5-konform.

0 Stimmen

Ich versuche hier herauszufinden, wie man einen Link erstellt Anker wie die Markierung, wohin Sie gehen zu wenn Sie eine URL haben, die mit "#something" endet. Soweit ich weiß, muss es in html vor 4 <a name="something"> sein. In html 4 ist es <a name="something" id="something"> (passend), und in html 5 <a id="something">, obwohl id ein "globales Attribut" für alles sein kann. Was ich nicht herausfinden kann, ist, ob name zusätzlich zu id geduldet in <a> in html 5. Ok, experimentieren Sie mit der Einrichtung, die ich gerade habe...

0 Stimmen

Während die a Tag name Attribut veraltet ist, wird es immer noch von Browsern wie Firefox unterstützt, daher ist die Antwort falsch. Ja, für einen Anker (Zielort) sollten Sie jetzt id für das Element verwenden ( <h2 id="hello"> ), aber das war nicht wirklich die Frage des Auftraggebers.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X