Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

perdu dans mon code...

8 réponses
Avatar
Une Bévue
je ne retrouve pas une fonction de mon code...
il s'agit d'une image (sorte de led) qui indique si j'ai une connection
WebSocket ou non, le code html :
<img id="bullet" src="img/bullet_red.png" alt="" />

donc dans mon code js j'ai :
bullet.src="img/bullet_green.png"; // connexion ouverte
...
bullet.src="img/bullet_red.png"; // connexion fermée.

en pratique ça marche "comme il faut" MAIS, comme je veux changer ça, je
recherche l'endroit où je définit "bullet" (l'élément html) et je ne le
trouve pas dans mon code...

d'ailleurs il commence par start() :
window.onload=start;

et si, dans la function start() je log bullet :
function start(){
console.log(" start() -> bullet = '" + bullet + "', bullet.src = '" +
bullet.src + "'");

...

et bien j'ai le bon résultat à la console :
start() -> bullet = '[object HTMLImageElement]', bullet.src =
'http://localhost/landp/img/bullet_red.png'

MAIS toute recherche avec mon éditeur de texte sur "bullet" ne me
retourne que deux lignes :
bullet.src="img/bullet_green.png";
bullet.src="img/bullet_red.png";

en particulier je ne trouve pas de truc genre :
var bullet = document.getElementById('bullet');
je n'utilise pas de framework genre jQuery...

si, à la console, je fais :
> bullet
j'obtiens :
<img id="bullet" src="img/bullet_green.png" alt="">

ça veut dire que "bullet" est défini en dehors de start(), en dehors de
toute function (?) ce qui se vérifie à la console par :
> window.bullet
qui donne le même résultat que précédemment :
<img id="bullet" src="img/bullet_green.png" alt="">

Conclusion : je suis incapable de retrouver la définition de "bullet"
(l'élément HTML) dans mon code...

Bizarre, bizarre.

8 réponses

Avatar
Une Bévue
Si j'ajoute, en dehors de toute function :
console.log(" bullet = '" + bullet + "', bullet.src = '" + bullet.src +
"'");
ou :
console.log(" window.bullet = '" + window.bullet + "', window.bullet.src
= '" + window.bullet.src + "'");

j'obtiens :
Uncaught ReferenceError: bullet is not defined

ce qui me semble "normal", mais qui ne me premet pas de trouver où
j'initie l'élément HTML "bullet"...
Avatar
SAM
Le 10/11/14 07:52, Une Bévue a écrit :

Oui bon ... il faudrait savoir sortir du DOM et revoir ses anales ...

Une image peut être "nommée" et par là retrouvée directement par son nom
(sans autre artifice de gEBI)

Le curieux ici est que l'image recherchée a un ID et pas de NAME ...
Peut-être une évolution (rétrograde) pour s’harmoniser avec les IE qui
n'y font pas de distinction ? (id ou name = même combat)

donc :
alert(document.bullet.src);
devrait donner : http://localhost/landp/img/bullet_red.png

Testé dans Fx,
c'est bien ça (avec ou sans document ou window).

<p><img src="cMoi.jpg" alt="moi-meme que voila" id="truc"></p>
<script>
alert('image alt = n'+document.truc.alt);
alert('image src = n'+truc.src);
</script>


je ne retrouve pas une fonction de mon code...
il s'agit d'une image (sorte de led) qui indique si j'ai une connection
WebSocket ou non, le code html :
<img id="bullet" src="img/bullet_red.png" alt="" />

donc dans mon code js j'ai :
bullet.src="img/bullet_green.png"; // connexion ouverte
...
bullet.src="img/bullet_red.png"; // connexion fermée.

en pratique ça marche "comme il faut" MAIS, comme je veux changer ça, je
recherche l'endroit où je définit "bullet" (l'élément html) et je ne le
trouve pas dans mon code...




Cordialement,
--
Stéphane Moriaux avec/with iMac-intel 27" & Mac OS X 10.6.8
Avatar
SAM
Le 11/11/14 14:23, SAM a écrit :
Le 10/11/14 07:52, Une Bévue a écrit :

Oui bon ... il faudrait savoir sortir du DOM et revoir ses anales ...


(snip)

Que Olivier me pardonne !
je n'ai pas tt à fait suivi les préceptes de usenet
et ai répondu directement à Yvon sans autre forme de préambule













Pris de remords (tardifs)
j'ai quand même laissé copie de l'essentiel du post d'Yvon

je ne retrouve pas une fonction de mon code...
il s'agit d'une image (sorte de




(re-snip)

et seulement *après* la réponse !!!!






je me flagelle, je me flagelle,
--
Stéphane Moriaux avec/with iMac-intel 27" & Mac OS X 10.6.8
Avatar
Une Bévue
Le 11/11/14 14:23, SAM a écrit :
alert(document.bullet.src);
devrait donner : http://localhost/landp/img/bullet_red.png



ouais, ouais, j'ai ça.

bon je ne connaissais pas ce truc pour les images, je préfère éviter son
utilisation.

merci !
Avatar
SAM
Le 13/11/14 06:12, Une Bévue a écrit :
Le 11/11/14 14:23, SAM a écrit :
alert(document.bullet.src);



bon je ne connaissais pas ce truc pour les images, je préfère éviter son
utilisation.



Pourquoi ?

Ça fait partie du JS "standard" et préalablement au DOM :
- collections d'images : document.images
et document.images[0]
ou document.images['trucMuche']
ou document.trucMuche
- collection d'ancres (<a name="truc" id="truc"></a>)
document.anchors
et variantes pour individuelles dont celle habituelle :
http://monsite/fichier.htm#truc
qui cette fois est du bête html de base (html.1 html.2 ?)
qui ces jours (html.4 ?) s'étend à tout élément dont l'ID correspond
- collection de formulaires
document.forms
- collection de liens
document.links
- ... embed ...


à mon idée, le brower à l'ouverture/chargement d'un fichier se bâti ses
arbres d'images, ancres, liens, formulaires etc
puis celui/ceux du DOM

il suffit ensuite de s'adresser à l'un ou l'autre

if(document.images)
alert('doc-image = '+ document.trucMuche.src);
else if (document.getElementById)
alert('doc-gEBI = '+ document.getElementById('trucMuche').src);
else
alert('vous utiliser un navigateur textuel');


Cordialement,
--
Stéphane Moriaux avec/with iMac-intel 27" & Mac OS X 10.6.8
Avatar
Une Bévue
Le 13/11/14 13:29, SAM a écrit :
Pourquoi ?



Ben le code est plus "lisse", quand je traite une image comparé à une div.

Ça fait partie du JS "standard" et préalablement au DOM :
- collections d'images : document.images



oui, ok, pigé, mais dans mon code je n'ai même pas ça.

j'ai simplement :

bullet.src = '/path/to/image';

sans que bullet soit défini quelque part, j'ai beau chercher, je ne
trouve null part quelque chose comme :

bullet = document.<ce qu'on voudra>;

dans mon cas l'id de l'image est justement 'bullet'...
Avatar
Chad Warwick
On Thu, 13 Nov 2014 19:23:48 +0100, Une Bévue wrote:

Le 13/11/14 13:29, SAM a écrit :
Pourquoi ?



Ben le code est plus "lisse", quand je traite une image comparé à une
div.

Ça fait partie du JS "standard" et préalablement au DOM :
- collections d'images : document.images



oui, ok, pigé, mais dans mon code je n'ai même pas ça.

j'ai simplement :

bullet.src = '/path/to/image';

sans que bullet soit défini quelque part, j'ai beau chercher, je ne
trouve null part quelque chose comme :

bullet = document.<ce qu'on voudra>;

dans mon cas l'id de l'image est justement 'bullet'...



En fait, le navigateur expose automatiquement les ID présents dans le
document comme des variables globales. C'est à dire que si tu as un <div
id="bidule"> ou une <img id="bidule">, tu vas pouvoir utiliser
directement bidule comme une variable sans avoir à la déclarer dans ton
JS. C'est considéré comme une assez/très/abominablement mauvaise
pratique, mais tous les navigateurs le font par défaut (à ma
connaissance).

Pitet qu'avec ES6 ça va disparaitre, je n'ai pas assez suivi pour dire :)

A+
[WarwiCK]
Avatar
Paul Gaborit
À (at) Sat, 15 Nov 2014 05:08:44 +0100,
Une Bévue écrivait (wrote):

Le 14/11/14 14:32, Chad Warwick a écrit :
En fait, le navigateur expose automatiquement les ID présents dans le
document comme des variables globales. C'est à dire que si tu as un <div
id="bidule"> ou une <img id="bidule">, tu vas pouvoir utiliser
directement bidule comme une variable sans avoir à la déclarer dans ton
JS. C'est considéré comme une assez/très/abominablement mauvaise
pratique, mais tous les navigateurs le font par défaut (à ma
connaissance).



Ah d'accord, c'est la seule explication possible, ah oui, c'est une
abominable pratique.



Que cette fonctionnalité existe est discutable. Ce qui est abominable,
c'est de s'en servir ! ;-)

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>