2010-07-15 3 views
2

IE продолжает давать мне ошибку в следующей строке, в которой указано «Требуемый объект». Я не уверен, где будет проблема. Любой совет?Где находится ошибка IE в этом скрипте?

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

Почему вы не просто используете PrototypeJS, jQuery или любые другие JavaScript-Framework? Они упрощают кросс-браузерную поддержку! – Javaguru

+0

У вас есть нулевой объект. Отлаживайте свой код. – Nubsis

+2

@Javaguru - Как вы можете обосновать предложение о том, чтобы Слевин принял всю структуру для простой операции вроде этого? – Sparafusile

ответ

1

Один из следующих вероятно, возвращает нуль:

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

или getBrowserWidth не определен.

+0

Этот скрипт является частью файла main.js, который охватывает весь сайт. На этой конкретной странице присутствуют «диалог» или «экран». Я предполагаю, что это приведет к тому, что они вернутся как null? – Slevin

+1

@Slevin: если вызываются 'showdiv' или' scrollEvent' или 'hidediv', и' screen' или 'dialog' не существует, что приведет к ошибке, да. вы можете вставить в качестве первой строки в каждой из этих функций следующий 'if (! document.getElementById ('dialog') ||! document.getElementById ('screen')) {return; } ', который прервет функцию, если какой-либо из DIV не существует –

+0

Дэвид, это и сделал трюк. Большое спасибо! – Slevin

0

document.getElementById("screen") Не определено. Добавьте следующий код:

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

и он скажет вам, если это так или нет.

+0

Spara, я добавил эту строку над document.getElementById («screen»), и она вернула предупреждение (что заставило меня смеяться, кстати). Как я могу это решить? Могу ли я установить этот «экран» в качестве переменной и назначить его 0 или что-то еще? – Slevin

0

Что аннексии STANDAR для в document.Annexation.checkbox.checked = true;

У вас есть 2 способа выбора флажка. Один присваивает значение имени тегу флажка.

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

document.getElementsByName("ck")[0].checked = true;, чтобы установить флажок.

Другим методом является присвоение идентификатора тегу флажка.

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

document.getElementById("ck").checked = true;, чтобы установить флажок.

+0

Unigg, Спасибо за понимание. К сожалению, это не код, который я написал, поэтому я все еще изучаю все вокруг и то, как мой предшественник организовал вещи. – Slevin

Смежные вопросы