Probleme avec getElementById(); [Résolu]

Signaler
Messages postés
65
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
25 juin 2010
-
Messages postés
3
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
26 avril 2015
-
Bonjour !

Dans ma page j'ai:

<td class="x">

</td>

Firefox appliques parfaitement les styles CSS.
Mais quand j'essaye de faire en JavaScript:

Tools_Container = document.getElementById("tools");

J'ai comme erreur:

Tools_Container is null.

Une idée comment corriger ca ?

nico

11 réponses

Messages postés
65
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
25 juin 2010

Bon j'ai bidouillé.

Apparement firefox charge les variables JS avant le HTML, quoi qu'on fasse, donc:

Tools_Container = "tools";

function getContainer(tool) {
    return document.getElementById(tool);
}
function loadTools() {
    var TC = document.getElementById(Tools_Container);
    ....
}
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
Bonjour,
L'erreur est ailleurs ?
ceci marche
très bien
<html>

<head>
</head>



[# Test]

</html>
;O)
Messages postés
65
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
25 juin 2010

Bleh.

Dans mon fichier JS:

var Tools_Container = document.getElementById("tools");
Tools_Container.innerHTML = "lol";

Resultat dans la console d'erreur:
Tools_Container is null.
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
Bonjour,
reste une possibilité,ou plus, mauvais balisage du document, manque BALISE body par exemple ou plusieures...
pour tester le document http://validator.w3.org/
autre chose qui peut arriver ce sont les accents dans du javascript si le charset=UTF-8
;O)
Messages postés
65
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
25 juin 2010

Nop.
J'ai eu quelques erreur du genre il manque <!DOCTYPE>
<link .... /> au lieu de <link ...>
bref rien de terrible o.o

Que faire !
Messages postés
1782
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
19 février 2021
118
bonjour essay de cree une node text
Tools_Container
.appendChild(document.createTextNode("lol"
));
Messages postés
65
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
25 juin 2010

Au final, je veux pas ajouter de texte brut:

Dans ma page html j'ai:




<script type="text/javascript">
<!--

var viewers = new Array();
viewers[0] = new Array();
viewers[0][0] = "Image Viewer";
viewers[0][1] = "IV_Init()";
viewers[1] = new Array();
viewers[1][0] = "Movie Player";
viewers[1][1] = "MP_Init()";

loadTools();
-->
</script>



et dans mon script JS j'ai:

currentTool = 0;

var Tools_Container = document.getElementById("tools");

function loadTools() {
var ul = document.createElement("ul");
for(var i = 0;i<viewers.length;i++) {
var li = document.createElement("li");
var a = document.createElement("a");
a.setAttribute("href","#");
if(i != currentTool) a.setAttribute("onclick","SwitchTool('" + i + "')");
var caption = document.createTextNode(viewers[i][0]);
a.appendChild(caption);
li.appendChild(a);
ul.appendChild(li);
}
Tools_Container.appendChild(ul);
}

En gros, ca creer une liste dans le div id="tools". Mais firefox veut rien savoir ;(
Tools_Container is null ;(
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
bonjour
          >><td class="x">

</td>
          Tools_Container = document.getElementById("tools");
pas de mystère : l'erreur est provoquée ailleurs ( petoleTeam++ )
      si l'erreur est bien là où tu l'indiques...
probablement "devant" la balise div, dans le html
absence de, " ou ' qui manque, balise non fermée...
normalement avec un éditeur à coloration syntaxique on devrait voir (?)
Cordialement.          Bul [mon Site] [M'écrire]         
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
Bonjour,
de ce que je lis, en en sortant, c'est
NORMAL, tu exécutes
var Tools_Container =
document.getElementById("tools");
avant la création éffective de ton
DIV dans le document HTML



<script
type="text/javascript">
var Tools_Container =
document.getElementById("tools");
loadTools();
</script>

devrait le faire...ou une autre façon d'ailleurs, mais l'interprétation ce fait en ligne...
;O)
Messages postés
65
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
25 juin 2010

Non le div est créer bien avant l'execution de la commande, et il y a une balise body ...

j'ai meme tenté ca:

window.setTimeout("loadTools()",3000);

rien a faire.... Tools_Container est toujours null..
Messages postés
3
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
26 avril 2015

Bonsoir,

Votre problème vient de getElementById qui n'est pas supporté par sous firefox.

Une des solutions consiste si vous avez une form de remplacer getElementById par document.form1.nomduchamp.value

Sinon, je ne sais pas comment identifié le champ.

Actuellement, je n'ai pas solutionné le pb, mais si j'ai une solution je vous l'envoie.