J'ai un petit script qui fait apparaitre une image et du texte en dessus de tout : la popup...
Jusqu'ici, le code ne faisait que afficher/masquer la popup, mais j'ai ensuite tenté un affichage plus "stylé"...
Depuis, les getElementBtId et getElementByName ne fonctionnent plus.
Voici mon script.js :
var popupTop =-100;
function showpopup()
{
popupTop ++;
window.status=popupTop;
document.getElementById("popup").style.top=popupTop;
if (popupTop == 500)
{
document.getElementsByName("textPopup").item(0).style.visibility="visible";
}
else
{
settimeout ("showpopup ()",100);
}
}
function callPopup (texte)
{
popupTop=70;
document.getElementsByName("pop").item(0).style.top=popupTop +"px";
document.getElementsById("popup").style.visibility="visible";
document.getElementsByName("textPopup").item(0).innerHTML=texte;
alert ("blablabla");
showpopup();
}
function closePopup()
{
document.getElementById("popup").style.visibility="hidden";
document.getElementsByName("textPopup").item(0).style.visibility="hidden";
}
Tu as un problème d'ordre pour exécuter tes scripts: ligne 15 tu appelles callPopup or le reste du DOM n'est pas encore chargé.
Donc lorsque tu essaie d'accéder à ces éléments (que ce soit avec getElementBtId ou getElementByName) il ne trouve pas les éléments en question (puisqu'ils n'ont pas encore été créés).
Pour corriger ton problème, mets ton script à la fin de la page (juste avant le </body>) ou alors utilises window.onload pour n'exécuter le script que lorsque ton document est chargé)
Sinon dans ton script JS, ligne 13, écrit
setTimeout(showpopup,100);
ça marchera mieux (les majuscules et minuscules sont importantes, et il est préférable de donner une référence à une fonction plutôt que d'utiliser une chaine de caractère (sinon cela demande un traitement d'évaluation en plus))
Problème avec getElementBy*
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.