Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1673 connectés 

  FORUM HardWare.fr
  Programmation

  Trouver l'erreur (Javascript)

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Trouver l'erreur (Javascript)

n°21607
Taupy2
Posté le 31-03-2001 à 13:22:13  profilanswer
 

Je n'arrive pas à trouver l'erreur dans ce code :
 
dans les balises SCRIPT :
function rien() {document.images[accueil].src="rubriques/accueil.gif"};
function viseur() {document.images[accueil].src="rubriques/accueilv.gif"}
 
et plus loin :
<A HREF="accueil.htm" target="droite"><IMG SRC="rubriques/accueil.gif" border=0 name="accueil" onMouseOut=rien() onMouseOver=viseur() width=103 height=50></A><BR>
 
A l'aide !!!! :(:(:(


---------------
mieux vaut mobiliser son intelligence sur des conneries, que sa connerie sur des choses intelligentes
mood
Publicité
Posté le 31-03-2001 à 13:22:13  profilanswer
 

n°21608
darkoli
Le Petit Dinosaure Bleu
Posté le 31-03-2001 à 14:27:37  profilanswer
 

essai une autre version :
 
dans les balises SCRIPT :  
function rien(im) {
  im.src="rubriques/accueil.gif";
  }  
function viseur(im) {
  im.src="rubriques/accueilv.gif";
  }  
 
et plus loin :  
<A HREF="accueil.htm" target="droite"><IMG SRC="rubriques/accueil.gif" border=0 name="accueil" onMouseOut=rien(this) onMouseOver=viseur(this) width=103 height=50></A><BR>

n°21620
Taupy2
Posté le 31-03-2001 à 18:40:52  profilanswer
 

non ça marche pas ... en fait IE me dit que l'erreur est du type "objet attendu" au niveau de la ligne de code :
<A HREF="accueil.htm" target="droite"><IMG SRC="rubriques/accueil.gif" border=0 name="accueil" onMouseOut=rien(this) onMouseOver=viseur(this) width=103 height=50></A><BR>
Ca me faisait deja ça avant ...


---------------
mieux vaut mobiliser son intelligence sur des conneries, que sa connerie sur des choses intelligentes
n°21636
JWhy
je peux plier (héhé)
Posté le 31-03-2001 à 21:45:02  profilanswer
 

essaye de mettre le nom de l'image entre "" dans ton script :
function rien() {document.images["accueil"].src="rubriques/accueil.gif"}
function viseur() {document.images["accueil"].src="rubriques/accueilv.gif"}


---------------
www.alliancefrancophone.org ... Home is where the heart is
n°21647
verdy_p
Posté le 01-04-2001 à 10:12:36  profilanswer
 

JWhy a écrit a écrit :

essaye de mettre le nom de l'image entre "" dans ton script :
function rien() {document.images["accueil"].src="rubriques/accueil.gif"}
function viseur() {document.images["accueil"].src="rubriques/accueilv.gif"}




L'erreur objet attendu vient du fait qu'il n'y a pas d'objet nommé accueil dans le document (que ce soit une variable globale de script, ou un élément dont précisant l'attribut id="accueil" ).
Le script ne marcherait pas non plus tel quel si l'élément <IMG> précisait cet attribut id="accueil". L'attribut name="accueil" d'une image ne crée pas de propriété dans le document au contraire de l'attribut id. Il n'est utilisable que pour indéxer par valeur le tableau images[] qui est une propriété implicite d'un document HTML. Les guillemets sont donc nécessaires.
 
Par contre si tu écris <IMG id="accueil" ...>, il n'est pas nécessaire d'utiliser en JavaScript (document.images["accueil"].src), mais on peut directement utiliser (document.accueil.src), car l'attribut id de n'importe quel élément HTML4 ajoute la propriété de nom indiqué au document, et l'utilisation de l'attribut name="accueil" devient superflue. Il y a toutefois une différence ici entre IE et Netscape: pour éviter des conflits, les éléments dont l'id est précisé sont tous référencés dans l'objet document.all mais pas forcément dans document, si par exemple cela écrasait une autre propriété vitale du HTML: ainsi si on écrit <IMG id="images"> en HTML, cela ne crée pas une propriété .images dans l'objet document, car cela rendrait inaccessible l'objet document.images qui permet de référencer non pas cette image précise, mais toutes les images du document. Netscape 6 ne fait pas la différence, et rend le tableau document.images inaccessible en Javascript, de sorte qu'alors document.images["images"] déclencherait une erreur.
 
Aussi il faut toujours éviter d'utiliser dans l'attribut id="nom" d'un élement HTML un nom qui entre en conflit avec une propriété connue de l'objet document. La même remarque est valable pour les noms de variables globales JavaScript qui doivent elles aussi ne pas être déclarées avec un nom homonyme d'une propriété connue de l'objet document: par exemple la déclaration JavaScript "var images;" déclencherait de tels conflits et rendrait là aussi le tableau document.images inaccessible !
 
De même il faut éviter de répéter l'occurence du même id dans des éléments différents du document.
 
Certains navigateurs ne vont alors référencer qu'une seule occurence dans l'objet document, et/ou ils vont référencer (comme IE) toutes les occurences dans l'objet document.all, en transformant par exemple document.all.nom en tableau indicé par un index numérique, de sorte qu'on peut accéder à chaque occurence par document.all.nom[0], etc... Ceci a pour effet de trasnformer le type de l'objet document.all.nom qui devient un Array d'éléments au lieu de référencer un élément individuel.
 
Ainsi IE ne plante pas si on crée une image dans le document HTML avec <IMG id="images">: l'image ne sera pas référencée par document.images, mais aura quand même une entrée dans document.images["images"] ou document.images.images et aussi sera référencée dans document.all par document.all.images.
 
Pour le cas où deux images on le même id, IE remplace aussi la référence simple document.images.nom à une image par un tableau indicé contenant les références à toutes les images ayant ce nom (c'est le comportement de "collections" décrit dans JavaScript2)
 
Si on ne précise pas l'attribut name="..." dans un élément <IMG>, l'image est quand même référencée dans le tableau document.images[], mais le comportement concernant l'indice sous lequel il est inséré est variable suivant les navigateurs: l'indice peut être numérique ou bien il peut prendre une valeur nommée ayant la valeur de id).
 
Sans utiliser id="accueil", tu peux aussi utiliser l'écriture (document.images.accueil.src) car en fait en JavaScript les tableaux sont aussi des objets (et vice-versa), et les noms de propriétés (par exemple ici la propriété .accueil de l'objet document.images) d'un objet sont équivalents aux valeurs d'indices d'un tableau (ici l'indice ["accueil"] du tableau document.images): toutefois la notation avec un point n'est possible que si la propriété a un nom qui soit compatible avec un symbole.
 
La norme JavaScript interdit en effet d'utiliser le point pour accéder sans guillemets à une propriété dont le nom contient des caractères autres qu'un chiffre, une lettre, ou un soulignement, et qui ne commence pas par une lettre ou un soulignement. Dans de tels cas, a notation indicée avec le nom entre guillements est obligatoire.
 
Cela ne remet pas en cause l'équivalence Tableau/Objet de JavaScript. En fait en JavaScript, le tableau est plus général que l'objet, car les indices ne sont pas restreints à des chaines de caractères, mais peuvent être numériques ou même un autre type objet en JavaScript 2. En JavaScript 1, il y avait des restrictions, et c'était plutôt l'objet qui était plus générique que le tableau.
 
A noter toutefois: si on utilise la notation tableau indicé, le seul fait d'affecter une valeur à une position numérique (indice entier) d'un tableau met à jour automatiquement sa propriété length (tableau.length ou tableau["length"] est toujours égal à la valeur maximale plus un, des indices ou propriétés du tableau dont le nom est un entier).

 

[edit]--Message édité par verdy_p--[/edit]

n°21675
kayno
Posté le 01-04-2001 à 17:06:39  profilanswer
 

heu et si tu déclarai la variable accueil ?

n°21727
wouatouwou​atou
Posté le 02-04-2001 à 09:57:18  profilanswer
 

met plutot accueil entre gillemets ... :D

n°21755
duch
Posté le 02-04-2001 à 11:44:30  profilanswer
 

apprends à mettre des guillements.


---------------
Webmaster du site de l'Île-Saint-Denis : http://www.lile-saint-denis.fr

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  Trouver l'erreur (Javascript)

 

Sujets relatifs
Javascript, Array, préchargement d'images et autres complications ;-)Changement d'images un peu long avec Javascript
[JAVASCRIPT] Problème sans doute très simple... mais je trouve pas !Problème avec les images réactives en Javascript
erreur sql???variable JavaScript =>PHP
[JAVASCRIPT]Comment récuperer les coordonné de la sourisVérification de formulaire...trouver l'erreur!
[ASP & JAVASCRIPT] connaitre les repertoire[ASP] Où est l'erreur ??
Plus de sujets relatifs à : Trouver l'erreur (Javascript)


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR