Y a-t-il une raison pour laquelle je devrais appeler une méthode JavaScript comme suit? ou puis-je simplement appeler cela comme ceci: P> onClick="MyMethod();"
5 Réponses :
La valeur d'un attribut Ceci est incorrect em> mais largement inoffensif: p> Parfois, les gens pensent que ce dernier utilise le L'attribut là, car nous mettons le code dans lequel une URI est attendue, nous devons spécifier une URI à l'aide du protocole code> JavaScript code>, Donc, le navigateur sait ce que nous faisons. Enfin: meilleur pour faire Peut-être un peu de sujet, mais: Utilisation des attributs HTML pour raccorder les gestionnaires Est parfaitement valide et fonctionne bien entre le navigateur croisé, mais il compromet la connexion JavaScript Event avec votre HTML. Certaines personnes voient cela comme une bonne chose, d'autres appartiennent au côté "javascript discret" et pensent que vous devriez tout accrocher plus tard. Ce que vous faites, c'est à vous de décider. L'approche discrète est particulièrement utile lorsque vos concepteurs HTML et vos codeurs JavaScript ne sont pas les mêmes personnes (comme cela se produit fréquemment sur les grandes équipes). P> L'approche non obstrisseuse dit essentiellement: N'utilisez pas les attributs HTML pour cette , faites-le plus tard de script. Donc au lieu de p> , vous pourriez avoir ce HTML: p> combiné avec ce JavaScript: p> onclick code> est un code, pas une URI, c'est correct (bien que ce n'est pas le seul moyen que vous puissiez le faire, voir tangente n ° 1 ci-dessous):
JavaScript code > Protocole, comme sur les liens, mais ce n'est pas le cas. Ça fait quelque chose d'autre entièrement. La langue du code dans l'attribut
onclick code> est définie au niveau de la page (et par défaut à JavaScript), et donc ce que vous faites réellement indique une étiquette em> dans votre javascript code, puis appelant
myMethod code>. JavaScript a des étiquettes (voir tangente n ° 2 ci-dessous), bien qu'elles ne soient pas utilisées beaucoup. P>
onclick code> est totalement différent de l'attribut
href code> sur les liens: p>
JavaScript code> est un protocole (comme
http code> ou
mailto code>) que Brendan EICH (Créateur de JavaScript) était assez intelligent pour définir et s'enregistrer (et mettre en œuvre) Très, très tôt, il est donc bien soutenu. p>
onclick code> Toutes les minuscules, non mixtes, bien que cela ne vraiment em> question si vous utilisez xhtml. p>
var innerIndex, outerIndex;
// Label the beginning of the outer loop with the (creative) label "outerloop"
outerloop: for (outerIndex = 0; outerIndex < 10; ++outerIndex) {
for (innerIndex = 0; innerIndex < 50; ++innerIndex) {
if (innerIndex > 3) {
break; // Non-directed break, breaks inner loop
}
if (innerIndex > 2 && outerIndex > 1) {
// Directed break, telling the code that we want to break
// out of the inner loop *and* the outer loop both.
break outerloop;
}
display(outerIndex + ":" + innerIndex);
}
}
Intéressant, car ASP.NET pourrait faire cela: href = "JavaScript: __ dopostback ('CTL00 $ MainContent $ GRDTEMPLATE $ CTL 16 $ LNK Commentaire', '')" "
ASP.NET fait beaucoup de choses.
Sont-ils corrects ou incorrects? Pourquoi Microsoft créerait-il ASP.NET Generate Code de cette façon, si ce n'est pas correct?
@Krummelz: Microsoft n'est pas tout à fait connu pour avoir adhéré aux normes.
@Krummelz - href = "JavaScript: MyMethod ();" est correct. onclick = "JavaScript: mymethod ();" n'est pas.
@Krummetz: href code> est différent de
onclick code>. Comme cela se produit, je dessine la distinction comme vous l'avez commenté. La réponse mise à jour devrait donc aider. :-)
Prudent! Vous devez différencier entre le href code> et
onclick code> attributs.
href code> nécessite le
JavaScript: code> pseudo-protocole pour savoir que c'est JavaScript et non une URL.
OnClick code> n'en a pas besoin, car OnClick ne peut contenir que JavaScript et non une URL.
Notez que l'exemple ASP.NET utilise un JavaScript: pseudo-URL dans l'attribut href d'un lien, pas dans son événement OnClick. Cela fonctionne, mais c'est un grave non-non d'une perspective d'accessibilité; la façon de le faire avec un lien serait - et la préférence qu'il y aurait pour que le HRF soit réellement indiquer à une autre page qui peut gérer le cas de noscript.
href = "" code> n'est pas le même que
onclick = "" code>.
href = code> est un lien, puis vous avez besoin du
JavaScript: code> pour le dire que vous souhaitez exécuter JavaScript et ne pas aller à une URL, alors que
onclick = < / Code> est un gestionnaire d'événements qui présume JavaScript.
@Ellusive: assez vrai, mais ils sont avec ce href code>.
wow, merci gars! Explications géniales :) Stackoverflow FTW!
@ T.J. Crowder: Tu as raison;)
Umm ... Que diriez-vous de OnClick = MyMethod; Code>?
@Ates: Hey, pourquoi s'arrêter là-bas, allons descendre le AddeventListener CODE> /
AttachEvent code> itinéraire! :-) Non, sérieusement, d'accord. La plupart (pas toutes) du temps, mieux pour attacher des gestionnaires séparément et éviter de mélanger votre JavaScript et HTML.
Techniquement, EICH n'a pas enregistré le système JavaScript: CODE> URL, il vient d'aller de l'avant et l'a utilisé (à l'origine comme
moka: code>). En effet, Netscape 2 a précédé le processus RFC2717. Oh, comment je souhaite n'avoir jamais inventé la maladie nauséabonde de
JavaScript: code> URL. La désastre infini et inutile d'utilisation et de sécurité qu'ils ont causées ...
@Bobince: Nonsense! Sans JavaScript code> URL, nous n'aurions pas de banquette! Rejoignez-vous, tomate, tomatoh, il les a créés. :-)
onclick code> présume déjà que vous exécutez le code JavaScript, il n'y a donc pas besoin d'un
JavaScript: code> pseudo-URL. P>
afaik, vous définissez une étiquette de saut avec le nom JavaScript code> ici. Vous ne devriez pas faire ça. Cela ne fait aucune différence pour l'appel. C'est la voie à suivre:
La différence est que le premier est faux. p>
Le premier se passe juste au travail car anidentificateur: code> se trouve être la syntaxe d'une étiquette dans JavaScript, mais comme il n'y a pas besoin d'une étiquette, il n'ya aucun point de l'ajouter. p>
peut plaire à quelqu'un d'élaborer un ansinateur: utilisation quand nous l'utilisons exactement. Ce qui se passe exactement lorsque JavaScript: est appelé
@sushil Bharwani: JavaScript: code> n'est pas appelé. Il définit une étiquette de saut en JavaScript et est totalement inutile dans ce cas.
@sushil: C'est une étiquette JavaScript. Il est à peine utilisé. Voir par exemple: développeur.mozilla.org/fr/javascript/reference/statifs/ Lab el
@sushil: En plus de l'excellente référence Rotora cédée ci-dessus, j'ai également fait une petite explication et exemple dans Ma réponse .
Voici une alternative discrète. Le code JavaScript en ligne rend votre HTML difficile à suivre. Séparer votre JavaScript (logique) à partir de votre HTML (présentation) est la voie à suivre. Dans JQuery, ce serait quelque chose comme ceci: mettre cela dans votre tête ou un fichier de script externe. De préférence où votre MyMethod code> est défini. Maintenant, votre élément est propre et tous vos appels de méthode sont situés au même endroit, plutôt que de se répandre via le HTML. P> P>
Utilisez
onclick = "myMethod ();" code>. Ou mieux encore, déposez tout le JavaScript en ligne en faveur de l'attribution d'événements de clic après chargé DOM.
@Stephen: Pourquoi ne pas faire un exemple et poster cela comme solution?
Bonne idée! Réponse à venir.
De nos jours, les attributs doivent être minuscules (au moins xhtml au moins). Il est difficile de perdre certaines habitudes, mais essayez d'utiliser
onclick code>.
@Kenneth J: La question est clairement indiquée et elle a attiré des réponses détaillées et précises. De plus, c'est probablement une question que beaucoup de programmeurs JavaScript ont eu lieu. Donc quel est le problème?