getElementById - Javascript/Node.js - Programmation
Marsh Posté le 06-12-2021 à 22:37:17
var boxA = document.getElementById(inputs);
inputs est un tableau : ça peut pas marcher
Par contre, essaye en mettant tout ce qui vient après la ligne 6 dans ta boucle for() avec boxA = inputs[z];
Marsh Posté le 07-12-2021 à 12:24:38
rufo a écrit : var boxA = document.getElementById(inputs); |
Merci beaucoup Rufo j'ai fait un poile différent, et dans la boucle cette fois-ci.
Code :
|
Marsh Posté le 08-12-2021 à 20:01:57
Pour information, la balise textarea a un attribut "maxlength".
Sinon j'utiliserai plutôt un .querySelectorAll(), itérerai sur chaque occurrence pour ajouter un "listener" d'évènement qui appellerait ta fonction pour vérifier la longueur du texte.
Marsh Posté le 20-11-2022 à 17:48:52
MaybeEijOrNot a écrit : Pour information, la balise textarea a un attribut "maxlength". Sinon j'utiliserai plutôt un .querySelectorAll(), itérerai sur chaque occurrence pour ajouter un "listener" d'évènement qui appellerait ta fonction pour vérifier la longueur du texte. |
Je déterre ce topic avec une question un peu bête dont je n'ai pas trouvé de réponse claire et qui appelle d'autres questions .
Quelles sont les différences entre querySelector() et getElementById() ?
J'ai vu que getElementById() ne permettait à accéder qu'à des objets avec un id alors que querySelector peut aussi accéder à des classes. Mais j'ai sûrement raté un truc plus subtil au niveau du fonctionnement .
Mon souci est que j'ai une page, où une fonction JS vient remplacer du texte :
Code :
|
Le contenu de cette page dépend de paramètres décidés par le serveur, où un des cas, j'affiche une horloge et une fonction JS doit mettre l'heure à jour, et du texte plus simple dans les autres cas.
Ça fonctionne, mais la fonction qui met l'heure à jour me pourrit la console quand l'horloge n'est pas présente, et à raison. J'ai bien essayé de tester l'existance de la variable comme je l'aurais fait en Python, mais là ça fonctionne aussi bien que if(1) .
Code :
|
Comment faudrait-t'il procéder ?
Note: j'ai mis en gras les instructions que j'ai varié pour tester, mais sans comprendre la différence .
Marsh Posté le 20-11-2022 à 17:58:13
getElementById(à recherche un élément par son attribut "id" alors que querySelector() permet de rechercher un élément sur d'autres critères comme un style CSS.
Marsh Posté le 20-11-2022 à 18:22:51
Manisque a écrit : Le contenu de cette page dépend de paramètres décidés par le serveur, où un des cas, j'affiche une horloge et une fonction JS doit mettre l'heure à jour, et du texte plus simple dans les autres cas. |
Lorsque tu détermines ce cas à partir des paramètres tu lances la fonction JS de mise à jour de l'horloge ou celle du texte. Je ne comprends pas bien le problème, il manque des informations sur le traitement serveur et client dans tes explications.
Soit côté serveur tu décides que le client lancera la fonction, soit tu passes ces paramètres jusqu'au client pour que l'exécution de la fonction se fasse ou non. Tu peux te contenter d'envoyer un paramètre binaire vers le client qui permettra de choisir quelle fonction tu lances.
Marsh Posté le 20-11-2022 à 18:47:56
rufo a écrit : getElementById(à recherche un élément par son attribut "id" alors que querySelector() permet de rechercher un élément sur d'autres critères comme un style CSS. |
Merci, c'est exactement la réponse que je cherchais .
MaybeEijOrNot a écrit :
|
En gros, fetch("/page/menu" ) récupère la page sur le serveur, sauf que le serveur n'envoie pas toujours la même page. Il envoie une horloge analogique quand aucune musique n'est jouée, et une image et du texte correspondants à la musique jouée quand c'est le cas.
Si nécessaire, je peux rajouter des infos pour distinguer plus facilement les pages côté client, mais ça me semble peu rigoureux.
Je pensais bêtement protéger l'accès aux éléments non-disponibles en testant leur existance.
Marsh Posté le 20-11-2022 à 19:09:38
Tu peux vérifier l'existence d'un objet ou d'une variable, ça ne pose pas de problème.
À ce moment là, utilise l'opérateur stricte :
Code :
|
Marsh Posté le 20-11-2022 à 19:45:55
Alors, j'ai adapté le code :
Code :
|
Ça fonctionne bien au premier affichage, puis ça me renvoie la même erreur dès que la page est rafraichie et que l'horloge manque.
J'ai exactement le même résultat en testant if('.hourshand' != 'undefined') qui me semble incorrect.
La console me renvoie ça :
Uncaught TypeError: document.querySelector(...) is null |
J'ai tenté la solution que tu proposais au début:
J'ai rajouté un bloc contenant un texte différent sur chaque page renvoyée, comme ici :
Code :
|
Puis je teste la valeur de cette variable avant de changer l'heure :
Code :
|
console.log(document.querySelector('.id').textContent) me retourne bien le texte correspondant à la page, mais la comparaison à l'air toujours vraie et me renvoie la même erreur qu'au début.
J'ai sûrement raté un truc évident pour que ça merde à chaque fois .
Marsh Posté le 20-11-2022 à 20:12:13
https://developer.mozilla.org/en-US [...] rySelector
Si querySelector ne trouve pas d'élément il renvoie null, utilise l'opérateur stricte avec 3 signes pour les comparaisons de type (=== ou !==).
Marsh Posté le 20-11-2022 à 20:18:09
Ça fonctionne, merci .
Marsh Posté le 06-12-2021 à 19:58:53
Bonjour,
J'ai un problèmes avec plusieurs textarea,
Mon objectif est de limiter un nombre de caractères par ligne.
Bien sûr avec un getElementById(la_valeure) ça fonctionne pour un textarea, mais sur ma page j'en ai plusieurs.
id=value_tiem_7
id=value_tiem_8
ETC...
le code qui fonctionne:
j'ai essayé quelques chose dur genre: (je fais une alerte provisoire juste pour voir si je vois bien les valeurs de l'ID.)
Si quelqu'un pourrait me guider je suis preneur merci !
Cédric