2010-11-08 26 views
27

Je travaille sur l'intégration d'une application flash dans une page Web en utilisant la méthode Satay:Est-il acceptable pour un élément HTML d'avoir le même [nom] que son [id]?

<object type="application/x-shockwave-flash" data="embeddy.swf" 
id="embeddy" name="embeddy"> 
    <param name="movie" value="embeddy.swf" /> 
</object>

Je veux flash pour fournir le objectID correct dans ExternalInterface.objectID, ce qui signifie que je dois régler les deux attributs name et id pour le object.

Normalement, j'essaie d'éviter de nommer les collisions avec des éléments en HTML, mais y a-t-il quelque chose de mal à régler les deux attributs à la même valeur dans ce cas?

Qu'en est-il des formulaires HTML? Est-ce que quelqu'un pense qu'il vaut la peine de définir un (0) (input | select | textarea) éléments name et id de la même valeur?

Répondre

46

Vous utilisez des ID pour la manipulation JavaScript.

Vous utilisez des noms pour la soumission de champ de formulaire.

Les deux ne sont pas liés. Donc, mettre les deux à la même valeur est OK, mais ce n'est pas nécessaire.

+9

En outre, les ID doivent être uniques, mais les noms ne doivent pas nécessairement être uniques. – jordanbtucker

+0

Ida sont également utilisés pour la liaison par identifiant de fragment, et pour le style via leur utilisation dans les sélecteurs CSS –

+0

Les Id sont pour faciliter la manipulation JavaScript, mais il est possible de faire certaines choses par leur nom en utilisant JavaScript. –

0

Je le fais tout le temps (surtout parce que certains navigateurs dans le passé - IE vient à l'esprit - n'utilisent le paramètre name que lors de l'envoi des données de formulaire). L'utilisation d'id rend le code de validation de formulaire beaucoup plus propre, IMO.

+3

Les navigateurs sont seulement * supposé * pour utiliser le paramètre de nom pour l'envoi de données de formulaire – Gareth

+1

Bien que vous n'utilisiez pas la même valeur 'name' et' id' pour boutons radio ou cases à cocher appartenant à un groupe, car les groupes de boutons radio/cases à cocher sont en quelque sorte identifiés par ceux-ci ayant tous le même nom. –

1

Yup! C'est absolument parfait.

id est l'identificateur côté client (lors de la recherche en place d'un élément dans le DOM)

nom est utilisé lors de la soumission de formulaire POST/GET les valeurs.

En dehors d'un élément d'entrée, il ne devrait pas être nécessaire d'utiliser le nom. Mais en donnant aux éléments d'entrée un id leur permet d'être recherchés dans le DOM de manière cohérente.

5

Non seulement c'est bon, mais c'est assez courant.

Les ID sont utilisés pour Javascript (et dans une moindre mesure, pour CSS).

Les noms sont utilisés pour les champs de formulaire afin de spécifier le nom de la valeur soumise.

Cependant, les anciennes versions d'IE ont des bogues connus, ce qui signifie que vous êtes presque obligé de les spécifier tous les deux dans de nombreux cas. (En supposant que vous voulez supporter ces anciennes versions d'IE, bien sûr!)

La seule chose à garder à l'esprit est que les ID doivent être uniques. Par conséquent, si vous avez des boutons radio qui ont tous le même nom, vous ne pouvez pas utiliser le même ID pour tous. Dans la plupart des autres cas cependant, il est parfaitement bien de les avoir pareil.

1

Je viens de découvrir le HTML4 answer to my question:

Les attributs id et name partagent le même espace de noms. Cela signifie qu'ils ne peuvent pas à la fois définir une ancre avec le même nom dans le même document.Il est permis d'utiliser les deux attributs pour spécifier l'identifiant unique d'un élément pour les éléments suivants: A, APPLET, FORM, FRAME, IFRAME, IMG, and MAP. Lorsque les deux attributs sont utilisés sur un seul élément, leurs valeurs doivent être identiques.

Maintenant, je suppose que la règle appliquée à applet et iframe devraient, par extension, le travail pour object et embed tags. Dans tous les cas, l'utilisation d'un nom identique & n'a pas produit d'événements inhabituels à ce jour.