Javascript raccourci pour getElementById
Est-il un raccourci pour le JavaScript document.getElementById? Ou est-il une manière que je peux définir un? Il obtient répétitive retaper que sur et sur.
- Je me demande qui downvoted presque toutes les réponses qui a offert tout à fait correct (et simple) des wrappers pour
document.getElementById()
? - Je ne sais pas qui downvoted, mais quelqu'un qui ne connaît pas assez avec Javascript qu'il ne sait pas comment créer des raccourcis comme ça, c'est pour frapper les problèmes quand il essaie de l'utiliser avec, disons, jQuery, et constate que la variable $ n'est pas cohérente. La bonne réponse est "Non, natif Javascript n'offre pas une abréviation, mais il existe plusieurs frameworks qui permettent de sélectionner les nœuds DOM plus facile."
- Très bonne question.
- Ouais, j'ai remarqué que tout à l'heure. Je suis le seul à ne pas descendre en-voter, de sorte que probablement me rend suspect n ° 1.
- J'ai fait merveille 😉 C'est un peu bizarre, étant donné les autres réponses (et les vôtres) sont sémantiquement identiques.
- Je serais d'accord que c'est bizarre. Je vais laisser mon profil parle de lui-même; mon tout-temps, le dossier de vote est 3,061 jusqu' / 50 vers le bas. ;o)
- oh ne vous inquiétez pas, je ne m'attends pas à un 60k rep utilisateur que la petite... 😉
- dw c'est Peut-être parce que j'ai accepté votre réponse?
- Ne m'obtenez pas le mal. J'ai très certainement suis que la petite, mais de toute façon j'arrive à s'abstenir de voter. ;o) @walle1357: Peut-être. Le système de vote, voici peut-être une drôle de chose parfois. :o)
- L'homme, je l'espère, l'OP a acquis quelques notions de javascript compétences dans les 5 dernières années..
- J'ai beaucoup grandi dans mon JS connaissances depuis 😛
Vous devez vous connecter pour publier un commentaire.
Ici, j'ai utilisé
$
, mais vous pouvez utiliser n'importe quel nom de variable valide.$
, félicitations pour le choix de ce trop?"$
si vous n'avez jamais charger.var $ = document.getElementById.bind(document)
, maisbind
n'est pas disponible dans tous les navigateurs. C'est peut-être plus vite si, parce que je suis seulement en utilisant des méthodes indigènes. Voulais juste ajouter ceci.bind
de remplacement pour ce sera effectivement plus lent, je suppose..bind
est plus lent.$('x_hello_world').foo(); // 2007-11-20 Added to fix bar.baz()
Maintenant? [cue Indiana Jones thème] Code de l'archéologie, bien sûr!var $ = document.getElementById;
convient également de travailler, juste pour économiser quelques octets.getElementById
méthode repose sur le fait d'être invoqué à partir du contexte d'appeldocument
. Lorsque vous appelez la méthode directement (par l'intermédiaire d'une référence directe à partir de$
), votre appel contexte devientwindow
(ouundefined
en "mode strict") et les pauses de la fonction. Que vous avez à faire$.call(document, 'some_id')
de fixer le contexte de l'appel.this
dans le contexte de l'appel. Dans le contexte,this
doit faire référencedocument
.Pour enregistrer un supplément de caractère vous pourraient polluer la Chaîne de prototype comme ceci:
Il fonctionne dans certains navigateurs, et vous pouvez accéder à des éléments de cette façon:
J'ai choisi le nom de la propriété de manière quasi aléatoire. Si vous avez réellement voulu utiliser ce raccourci, je vous recommandons de venir avec quelque chose de plus facile à taper.
Vous pouvez facilement créer des listes d'abréviations facilement vous-même:
Une alternative rapide et de contribuer:
Puis il suffit de faire:
Il y a un piège, il ne fonctionne pas dans les navigateurs qui ne les laissez pas vous étendre prototypes (par exemple, IE6).
document.e = document.getElementById
???prototype.js
qui n' exactement cette même chose.(Raccourci pour non seulement obtenir de l'élément par son ID, mais aussi obtenir de l'élément par classe :P)
- Je utiliser quelque chose comme
Utilisation :
_(".test")
renvoie tous les éléments avec le nom de classetest
, et_("#blah")
renvoie un élément avec l'idblah
.document.querySelectorAll
, au lieu d'essayer d'émuler une partie de laquerySelectorAll
méthode dans une fonction personnalisée.id sont enregistrés à la
window
.HTML
JS
est la même que l'écriture:
Je vous suggère de ne pas utiliser l'ancienne méthode n'est pas pratique courante.
Il y a plusieurs bonnes réponses ici et plusieurs sont de la danse autour de jQuery-comme la syntaxe, mais aucun ne mentionne effectivement à l'aide de jQuery. Si vous n'êtes pas à l'encontre de l'essayer, découvrez jQuery. Il vous permet de sélectionner des éléments super facile comme ça..
Par ID:
Par classe CSS:
Par type d'élément:
Il n'y a aucun intégré.
Si vous n'avez pas l'esprit de polluer l'espace de noms global, pourquoi pas:
EDIT - j'ai changé le nom de la fonction à être quelque chose de inhabituelle, mais court et pas autrement en conflit avec jQuery ou quoi que ce soit d'autre qui utilise un nu -
$
signe.Oui, ça devient répétitif à utiliser la même fonction sur et sur à chaque fois avec un autre argument:
Donc une belle chose serait une fonction qui prend tous ces arguments, à la fois:
Alors que vous auriez des références à toutes vos éléments stockés dans un objet:
Mais vous auriez encore à la liste de tous les codes.
Vous pourriez simplifier encore plus si vous le souhaitez tous éléments avec id:
Mais il serait assez cher pour appeler cette fonction si vous avez de nombreux éléments.
Donc, théoriquement, si vous utilisez le
with
mot-clé que vous pourriez écrire un code comme ceci:Mais je ne veux pas promouvoir l'utilisation de
with
. Probablement il y a une meilleure façon de le faire.Eh bien, vous pourriez créer une abréviation de la fonction, c'est ce que je fais.
et puis, quand vous avez voulu pour l'obtenir, il vous suffit de ne
Aussi, une autre astuce utile que j'ai trouvé, c'est que si vous voulez obtenir la valeur ou innerHTML d'un élément d'ID, vous pouvez faire des fonctions comme ceci:
Espérons qu'il vous plaira!
J'ai effectivement fait une sorte de mini bibliothèque javascript basé sur cette idée.
Ici il est.
J'utilise fréquemment:
Je pense que c'est mieux qu'une fonction externe (par exemple,
$()
oubyId()
) parce que vous pouvez faire des choses comme ceci:Btw, ne pas utiliser jQuery pour cela, jQuery est beaucoup, beaucoup plus lent que
document.getElementById()
, une fonction externe comme$()
oubyId()
, ou ma méthode: http://jsperf.com/document-getelementbyid-vs-jquery/5J'ai écrit ça hier et l'a trouvé très utile.
C'est la façon dont vous l'utiliser.
Si c'est sur votre propre site, pensez à utiliser une bibliothèque comme jQuery pour vous donner cela et pour bien d'autres abréviations que également abstraction des différences de navigateurs. Personnellement, si j'ai écrit le code nécessaire à l'être gêné par la main, je voudrais inclure jQuery.
En jQuery, la syntaxe serait
$("#someid")
. Ensuite, si vous voulez la réelle de l'élément du DOM et de ne pas le jQuery wrapper, c'est$("#someid")[0]
, mais vous pourriez probablement faire ce que vous êtes après, avec le jQuery wrapper.Ou, si vous êtes en utilisant ce dans un navigateur développeur de la console, à la recherche de leur intégrés dans les services publics. Comme quelqu'un d'autre a mentionné, le Chrome JavaScript console comprend un
$("someid")
méthode, et vous pouvez également cliquer sur un élément dans les outils de développement des "Éléments" de la vue et de référence avec$0
à partir de la console. Précédemment sélectionné, l'élément devient$1
et ainsi de suite.Si le seul problème ici est de taper, tu pourrais peut-être obtenir vous-même un éditeur de JavaScript avec intellisense.
Si l'objectif est une réduction de la taille de code, alors vous pourriez envisager une bibliothèque JavaScript comme jQuery, ou vous pouvez simplement écrire votre propre abréviation fonctions, comme:
J'ai utilisé pour faire le dessus pour une meilleure performance. Ce que j'ai appris l'année dernière, c'est qu'avec des techniques de compression le serveur fait automatiquement pour vous, donc, mon raccourcissement technique agissait en fait de faire mon code plus lourd. Maintenant, je suis juste content de taper l'ensemble du document.getElementById.
Si vous demandez une abréviation de la fonction...
ou
Flèche fonctions est la plus courte.
id
argument.envelopper le document.querySelectorAll ... jquery comme choisir
$('#myId')
alors il devrait normalement revenir que HTMLElement, parce que vous nous l'espérons attribué id exactement une fois. Mais si vous voulez l'utiliser avec des requêtes à correspondre à plusieurs éléments, il devient encombrant.Bien, si l'id de l'élément n'est pas en concurrence avec toutes les propriétés de l'objet global, vous n'avez pas à utiliser n'importe quelle fonction.
edit: Mais vous ne pas souhaitez faire usage de cette option.
Un autre wrapper:
JS:
HTML:
Ce, dans le cas où vous ne souhaitez pas utiliser le impensable, voir ci-dessus.