CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • French Days
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • French Days
  • RetourHigh-Tech
    • French Days
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : Pas bien d'utiliser onclick etc dans les element html ?

News culture
La Planète des Singes : Le Nouveau Royaume - la révolution simienne est en marche !
DébutPage précedente
1
Page suivantePage suivante
Frigid Frigid
MP
Niveau 52
13 juillet 2023 à 21:03:33

Quelqu un m'a dit c'est pas bien d'utiliser onclick etc dans les element html pq ?

MaSainteVerge MaSainteVerge
MP
Niveau 6
13 juillet 2023 à 21:38:31

En effet, il faut privilégier l'utilisation du DOM. Plutôt que d'utiliser onclick="laFonction()" tu utiliser en js document.querySelector("selecteurCSS").addEventListener("click", laFonction())

Frigid Frigid
MP
Niveau 52
13 juillet 2023 à 23:03:55

Le 13 juillet 2023 à 21:38:31 :
En effet, il faut privilégier l'utilisation du DOM. Plutôt que d'utiliser onclick="laFonction()" tu utiliser en js document.querySelector("selecteurCSS").addEventListener("click", laFonction())

C'est relou de faire comme ca

deepblue deepblue
MP
Niveau 13
15 juillet 2023 à 14:04:43

onclick fonctionne mais c'est une mauvaise pratique. Cela implique par exemple d'avoir du chargement de javascript bloquant en début de page, ce qui est aussi une mauvaise pratique. En effet, la fonction que tu passes dans le onclick doit être déclarée au moment ou l'utilisateur va cliquer hors tu ne peux pas t'en assurer sauf si le javascript est chargé en premier. Cependant, le chargement de ce code va bloquer l'affichage de ta page html pendant la période du chargement.

La bonne pratique est donc de gérer les événements avec une méthode similaire à celle proposée par MaSainteVerge.

Soroughh Soroughh
MP
Niveau 17
16 juillet 2023 à 11:05:02

Merci deepblue

CpFanron CpFanron
MP
Niveau 8
16 juillet 2023 à 22:02:49

En fait, c'est une pratique de feignasse qu'on attrape (je pense) après avoir appris des framewokrs. Car quand tu vas apprendre un framework comme ReactJS par ex tu verras que c'est comme ça tu appelleras tes fonctions dans ton JSX

<>
 <button onClick={() => taFonction(params)} className="button-save">
          Save
 </button>/>
</>

tu n'utiliseras plus les DOM.

Après pour répondre à la question "est ce que c'est une mauvaise pratique" sur Js de base, je vais faire confiance aux VDD, mais pour être honnête j'ai déjà testé d'appeler des fonctions comme ça directement dans le Template literals et j'ai pas eu de soucis, tous les éléments se mettaient à jour et sans erreurs, ni d'avertissements dans la console.

Frigid Frigid
MP
Niveau 52
17 juillet 2023 à 15:08:49

On peut pas appeler une fonction définie dans le document ready quand on est en dehors.
Et lors d'un ajax sur la page ben pour faire le add listener il va me dire qu'il trouve pas la fonction.
Que faire ?

Message édité le 17 juillet 2023 à 15:11:05 par Frigid
CpFanron CpFanron
MP
Niveau 8
17 juillet 2023 à 16:36:13

Tu peux toujours export / import ton fichier javascript ou meme ta fonction.
Les fonctions c'est le même principe que quand tu déclares une variable si tu la déclares apres alors que tu appelles ta fonction ou variable avant, il va ta dire que ce n'est pas défini. Il faut pas oublier que javascript se lit de façon synchrone, c'est pour ça qu'on utilise axios/fetch (ou ajax mais je te conseille axios ou bien d'utiliser simplement fetch) pour récupérer des données de facon asyncrhone pour pas que ton code se bloque quand il fait un call api par ex.
Mais pour qu'on t'aide plus facilement partage nous ton repo ou encore met ton code dans un jsfiddle ou codepen.
Sans le code c'est pas évident d'aider.

Message édité le 17 juillet 2023 à 16:37:01 par CpFanron
Frigid Frigid
MP
Niveau 52
17 juillet 2023 à 16:44:05

Le 17 juillet 2023 à 15:08:49 :
On peut pas appeler une fonction définie dans le document ready quand on est en dehors.
Et lors d'un ajax sur la page ben pour faire le add listener il va me dire qu'il trouve pas la fonction.
Que faire ?

Je fais ca pour déclarer la fonction du coup
window.editRole = function(element) {

CpFanron CpFanron
MP
Niveau 8
17 juillet 2023 à 16:49:08

??? C'est quoi editRole, c'est quelque chose propre à ajax?
Mais même en faisant une recherche google je vois rien avec window.editRole.
Tu codes en javascript? en python(backend)?

Message édité le 17 juillet 2023 à 16:51:19 par CpFanron
CpFanron CpFanron
MP
Niveau 8
17 juillet 2023 à 16:52:51

le mieux c'est de partager ton code, comme je t'ai dit met tout ton code dans un jsfiddle et partage.
car là avec une seule ligne c'est pas trop explicite

deepblue deepblue
MP
Niveau 13
17 juillet 2023 à 19:05:12

Frigid, ce type de déclaration est sans doute une des pires choses à faire.

Frigid Frigid
MP
Niveau 52
17 juillet 2023 à 23:27:08

Le 17 juillet 2023 à 19:05:12 :
Frigid, ce type de déclaration est sans doute une des pires choses à faire.

Pourquoi ? Que faire alors ?

Message édité le 17 juillet 2023 à 23:27:47 par Frigid
Frigid Frigid
MP
Niveau 52
17 juillet 2023 à 23:27:21

Le 17 juillet 2023 à 16:49:08 :
??? C'est quoi editRole, c'est quelque chose propre à ajax?
Mais même en faisant une recherche google je vois rien avec window.editRole.
Tu codes en javascript? en python(backend)?

Ben le nom d'une variable.

boucif boucif
MP
Niveau 24
18 juillet 2023 à 10:34:58

je vois pas en quoi ça serait une mauvaise chose, à part vouloir se faire chier à enregistrer l'event après coup dans le js (chose compréhensible dans certains scénario), souvent on utilise le onclick, l'event a été crée pour ça, par contre ça peut être merdique si tu met un onclick sur une div et un onclick sur un bouton dedans, si tu coupes pas l'event il se propagera à la div

Bach2264 Bach2264
MP
Niveau 2
19 juillet 2023 à 12:49:08

Salut,

En fait, utiliser onclick dans les éléments HTML n'est pas top. Il vaut mieux utiliser le DOM et les écouteurs d'événements en JavaScript. C'est plus propre et ça évite des soucis de chargement. Si t'as besoin d'aide, partage ton code

Marav Marav
MP
Niveau 29
20 juillet 2023 à 21:18:36

Boucif, il me semble que onClick est purement un reliquat de la vieille époque d'Internet et du gros bordel lorsque les navigateurs se faisaient une guerre sans aucune forme de standardisation.
C'est d'ailleurs pour cela qu'il reste énormément de fonctionnalités avec le préfixe on qui font redite.

Désormais comme tu le dis il a une utilisation un peu détournée, mais en aucun cas a été crée pour ça.
Le problème avec les frameworks JS désormais, c'est qu'ils poussent les gens à faire ce genre de code sur du HTML "pur" même en production alors que c'est clairement désuet - et y a des nuances concernant le scoping du code appelé, mais j'ai peur de dire une bêtise.

edit : le DOM n'existait pas en tant que tel lorsque les premiers événements JS sont apparus, d'où le fait d'y attacher ce onEvent directement sur le HTML.

Message édité le 20 juillet 2023 à 21:20:23 par Marav
Frigid Frigid
MP
Niveau 52
21 août 2023 à 01:06:57

Le 20 juillet 2023 à 21:18:36 :
Boucif, il me semble que onClick est purement un reliquat de la vieille époque d'Internet et du gros bordel lorsque les navigateurs se faisaient une guerre sans aucune forme de standardisation.
C'est d'ailleurs pour cela qu'il reste énormément de fonctionnalités avec le préfixe on qui font redite.

Désormais comme tu le dis il a une utilisation un peu détournée, mais en aucun cas a été crée pour ça.
Le problème avec les frameworks JS désormais, c'est qu'ils poussent les gens à faire ce genre de code sur du HTML "pur" même en production alors que c'est clairement désuet - et y a des nuances concernant le scoping du code appelé, mais j'ai peur de dire une bêtise.

edit : le DOM n'existait pas en tant que tel lorsque les premiers événements JS sont apparus, d'où le fait d'y attacher ce onEvent directement sur le HTML.

Tu conseil de faire quoi ?

Apochaos Apochaos
MP
Niveau 63
22 août 2023 à 15:14:26

Le 21 août 2023 à 01:06:57 :

Le 20 juillet 2023 à 21:18:36 :
Boucif, il me semble que onClick est purement un reliquat de la vieille époque d'Internet et du gros bordel lorsque les navigateurs se faisaient une guerre sans aucune forme de standardisation.
C'est d'ailleurs pour cela qu'il reste énormément de fonctionnalités avec le préfixe on qui font redite.

Désormais comme tu le dis il a une utilisation un peu détournée, mais en aucun cas a été crée pour ça.
Le problème avec les frameworks JS désormais, c'est qu'ils poussent les gens à faire ce genre de code sur du HTML "pur" même en production alors que c'est clairement désuet - et y a des nuances concernant le scoping du code appelé, mais j'ai peur de dire une bêtise.

edit : le DOM n'existait pas en tant que tel lorsque les premiers événements JS sont apparus, d'où le fait d'y attacher ce onEvent directement sur le HTML.

Tu conseil de faire quoi ?

Ca dépend si tu fais du vanilla JS ou si tu utilises un framework comme React.

En vanilla JS, tu dois utiliser les event listener càd la méthode "addEventListener" https://www.w3schools.com/jsref/met_element_addeventlistener.asp

Si tu utilises un framework, alors tu dois te référer à la doc de celui-ci car chacun a sa manière de faire.

55helau 55helau
MP
Niveau 37
05 octobre 2023 à 14:33:28

En fait c'est pas standard même pour maintenir ton code et debugger sur le long terme. En entreprise tu ferais jamais ça. Je parle bien de JS vanilla.

L’idée serait de charger ton js genre app.js

Ce même fichier pourrait importer des modules js, tu fais un query selector, si il est pas vide tu lance la fonction à l'evenement voulu. En terme de performance et de lisibilité ça marche pas mal. :ok:

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : Thymotep
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment