Probleme avec getElementById();

Résolu
DakM Messages postés 65 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 25 juin 2010 - 17 oct. 2008 à 16:42
gildou Messages postés 3 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 26 avril 2015 - 18 oct. 2008 à 23:13
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

DakM Messages postés 65 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 25 juin 2010
18 oct. 2008 à 13:15
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);
    ....
}
3
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
17 oct. 2008 à 17:08
Bonjour,
L'erreur est ailleurs ?
ceci marche
très bien
<html>

<head>
</head>



[# Test]

</html>
;O)
0
DakM Messages postés 65 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 25 juin 2010
17 oct. 2008 à 17:13
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.
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
17 oct. 2008 à 18:40
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)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DakM Messages postés 65 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 25 juin 2010
17 oct. 2008 à 18:46
Nop.
J'ai eu quelques erreur du genre il manque <!DOCTYPE>
<link .... /> au lieu de <link ...>
bref rien de terrible o.o

Que faire !
0
@karamel Messages postés 1854 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 8 avril 2024 153
17 oct. 2008 à 20:13
bonjour essay de cree une node text
Tools_Container
.appendChild(document.createTextNode("lol"
));
0
DakM Messages postés 65 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 25 juin 2010
18 oct. 2008 à 03:22
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 ;(
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
18 oct. 2008 à 06:39
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]         
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
18 oct. 2008 à 07:15
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)
0
DakM Messages postés 65 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 25 juin 2010
18 oct. 2008 à 13:07
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..
0
gildou Messages postés 3 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 26 avril 2015
18 oct. 2008 à 23:13
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.
0
Rejoignez-nous