2010-07-15 3 views
2

IE continue à me donner une erreur sur l'avant-dernière ligne indiquant "Objet requis". Je ne suis pas sûr d'où le problème serait. Aucun conseil?Où se trouve l'erreur trouvée par IE dans ce script?

function showdiv() 
{ 
    document.getElementById("dialogue").style.display = ""; 
    document.getElementById("screen").style.display = ""; 
    document.getElementById("screen").style.width = getBrowserWidth(); 
} 
function hidediv(opt){ 
if(opt=="agree"){ 
    document.Annexation.checkbox.checked = true; 
    document.getElementById("dialogue").style.display = "none"; 
    document.getElementById("dialogue").style.display = "none"; 
    document.getElementById("screen").style.display = "none"; 
}else{ 
    document.getElementById("dialogue").style.display = "none"; 
    document.getElementById("screen").style.display = "none"; 
}} 

window.onscroll = scrollEvent; 
function scrollEvent() { 
var y; 
if (document.documentElement && !document.documentElement.scrollTop) 
    // IE6 +4.01 but no scrolling going on 
    y=document.documentElement.scrollTop; 
else if (document.documentElement && document.documentElement.scrollTop){ 
    // IE6 +4.01 and user has scrolled 
    y=document.documentElement.scrollTop; 
} 
else if (document.body && document.body.scrollTop){ 
    // IE5 or DTD 3.2 
    y=document.body.scrollTop; 
} 
    document.getElementById("screen").style.top = y+"px"; 
} 
+0

Pourquoi vous ne vous contentez pas d'utiliser prototypejs, jQuery ou tout autre-cadre JavaScript? Ils facilitent la prise en charge de plusieurs navigateurs! – Javaguru

+0

Vous avez un objet nul. Déboguez votre code. – Nubsis

+2

@Javaguru - Comment pouvez-vous justifier que Slevin adopte un cadre complet pour une opération simple comme celle-ci? – Sparafusile

Répondre

1

Un des éléments suivants retourne probablement null:

document.getElementById("dialogue") 
document.getElementById("screen") 
document.Annexation 
document.Annexation.checkbox 

ou getBrowserWidth n'est pas défini.

+0

Ce script fait partie d'un fichier main.js qui englobe un site entier. Sur cette page spécifique, "dialogue" ou "écran" sont présents. Je suppose que c'est ce qui les ferait retourner comme nul? – Slevin

+1

@Slevin: si 'showdiv' ou' scrollEvent' ou 'hidediv' sont appelés, et que 'screen' ou' dialogue' n'existe pas, cela provoquera une erreur, oui. vous pouvez insérer, comme première ligne dans chacune de ces fonctions, le 'if (! document.getElementById ('dialogue') suivant ||! document.getElementById ('screen')) {return; } 'qui annulera la fonction quand l'un des DIVs n'existera pas –

+0

David, Cela a fait l'affaire. Merci beaucoup! – Slevin

0

document.getElementById("screen") est non défini. Ajoutez le code suivant:

if(!document.getElementById("screen")) alert("Spara was right."); 

et il vous dira si c'est le cas ou non.

+0

Spara, j'ai ajouté cette ligne au-dessus du document.getElementById ("screen") et elle a renvoyé l'alerte (ce qui m'a fait rire au passage). Comment puis-je résoudre ça? Puis-je définir cet "écran" comme une variable et l'affecter à 0 ou quelque chose? – Slevin

0

Qu'est-ce que standar Annexion dans document.Annexation.checkbox.checked = true;

Vous avez 2 façons de sélectionner une case à cocher. L'un est l'attribution d'une valeur de nom pour l'étiquette de la case à cocher.

<input type="checkbox" name="ck" /> 

document.getElementsByName("ck")[0].checked = true; pour cocher la case.

Une autre méthode consiste à assigner un identifiant de l'étiquette de case à cocher.

<input type="checkbox" id="ck" /> 

document.getElementById("ck").checked = true; pour faire la case cochée.

+0

Unigg, Merci pour la perspicacité. Malheureusement, ce n'est pas du code que j'ai écrit, alors je suis toujours en train de tout apprendre et de suivre la façon dont mon prédécesseur a organisé les choses. – Slevin