Question

Cette question peut sembler stupide, mais quelle est la différence entre l'accès à un élément (avec id « someId ») en utilisant document.getElementById ( « someId ») vs. juste en tapant someId?

par exemple:

document.getElementById("someId").style.top = "12px";

vs

someId.style.top = "12px";

Voici un exemple de code http://jsfiddle.net/pRaTA/ (je trouve que ce n » travail t dans firefox)

Était-ce utile?

La solution

La différence est que tout someId fonctionne dans certains navigateurs, document.getElementById("someId") en fait conforme à la norme W3C.

Autres conseils

Déclarer un identifiant DOM élément ne signifie pas qu'il est disponible en tant que variable globale dans tous les navigateurs. La façon compatible uniquement pour obtenir ce croix est d'abord faire.

var someId = document.getElementById("someId");

Modifier J'ai fait ce code de test qui vérifie que les navigateurs basés sur Webkit semblent faire l'id disponible en tant que var sans d'abord déclarer. Selon cette , aussi IE montrera ce comportement .

  • Firefox: objet / non défini
  • Safari: objet / objet
  • Chrome: objet / objet
  • IE: objet / objet (non vérifiée)

Code:

 <html>
    <head>
    </head>
 <body>
   <div id="foo"></div>
   <script type="text/javascript">

     alert("getElementById: "+typeof document.getElementById("foo"));
     alert("as a var: "+typeof foo);

   </script>
 </body>

Dans les scripts côté client, nous faisons document.getElementById pour obtenir le obj élément de la page Web. Pour récupérer l'élément particulier du DOM et de ses propriétés et méthodes, vous devez utiliser la méthode getElementById. En Jquery vous pouvez simplement faire var objX = $ ( '# id')

Où que l'écriture vers le bas id ne fera pas le travail. Parce que comment allez-vous extraire l'élément obj du DOM sans traverser le document. méthode document.getElementById va tirer l'information des éléments du document. J'espère que cela donner un sens.

En utilisant simplement la someId est une ancienne façon de sélectionner un élément (je pense que cela a été mis en œuvre par IE). document.getElementById est le standard qui fonctionne sur tous les navigateurs.

Compte tenu du scénario que vous soutenez que les anciens navigateurs IE. document.getElementById est encore plus fiable et facile à lire. Fiable si vous utilisez tous les numéros pour ids.

par exemple:

input element id="123"

document.getElementById('123').value; // this one works
123.value; // this one doesn't

Accès aux éléments en tant que propriétés de l'objet global du nom de l'ID de l'élément (votre deuxième exemple) est une commodité qui a pris naissance dans IE et a été copié par Safari et Chrome. C'est une très mauvaise idée et vous ne devriez pas l'utiliser. La question principale est de nommer les collisions (par exemple, des éléments avec ids parfaitement valides comme « alerte » ou « document »).

document.getElementById(), d'autre part, est la norme DOM établie de longue date et, en dehors de quelques défauts idiotes IE , est à toute épreuve. Toujours utiliser de préférence à l'autre forme.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top