CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • 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 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

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

Frigid
Frigid
Niveau 62
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
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
Niveau 62
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
Niveau 16
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
Niveau 26
16 juillet 2023 à 11:05:02

Merci deepblue

Pseudo supprimé
Pseudo supprimé 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
Niveau 62
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
Pseudo supprimé
Pseudo supprimé 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 Pseudo supprimé
Frigid
Frigid
Niveau 62
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) {

Pseudo supprimé
Pseudo supprimé 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 Pseudo supprimé
Pseudo supprimé
Pseudo supprimé 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
Niveau 16
17 juillet 2023 à 19:05:12

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

Frigid
Frigid
Niveau 62
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
Niveau 62
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
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
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
Niveau 52
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
Niveau 62
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
Niveau 79
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
Niveau 64
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:

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware