Событие Javascript onclick не работает в Internet Explorer 8 - PullRequest
1 голос
/ 20 апреля 2010

У меня есть следующая строка кода, которая отлично работает в Firefox, Chrome и Safari, но не в Internet Explorer 8.

<a href="javascript:void(0);" onclick="showHide('reading','type_r','r');">Show me the example</a>

Функция просто показывает и скрывает элемент div при нажатии на гиперссылку.

Есть ли что-то, что я здесь скучаю?

Это функция showHide:

function showHide(elementId,parentId,qtype) {

if (document.getElementById && !document.all) {

    var elementParent = document.getElementById(parentId);
    var element = document.getElementById(elementId);
    var upArrowId = 'up-arrow-'+qtype;
    var downArrowId = 'down-arrow-'+qtype;

    if(element.style.visibility == 'hidden'){

        elementParent.style.height = 'auto';
        element.style.visibility = 'visible';
        document.getElementById(upArrowId).style.visibility = 'visible';
        document.getElementById(downArrowId).style.visibility = 'hidden';
    }
    else if(element.style.visibility == 'visible'){
        element.style.visibility = 'hidden';
        elementParent.style.height = '50px';
        document.getElementById(upArrowId).style.visibility = 'hidden';
        document.getElementById(downArrowId).style.visibility = 'visible';      
    }
}

}

Спасибо.

Ответы [ 2 ]

1 голос
/ 21 апреля 2010

Ваш код Javascript должен быть таким:

function showHide(elementId,parentId,qtype) { 

    var elementParent = document.getElementById(parentId); 
    var element = document.getElementById(elementId); 
    var upArrowId = 'up-arrow-'+qtype; 
    var downArrowId = 'down-arrow-'+qtype; 

    if(element.style.visibility == 'hidden'){ 

        elementParent.style.height = 'auto'; 
        element.style.visibility = ''; 
        document.getElementById(upArrowId).style.visibility = ''; 
        document.getElementById(downArrowId).style.visibility = 'hidden'; 
    } 
    else if(element.style.visibility == ''){ 
        element.style.visibility = 'hidden'; 
        elementParent.style.height = '50px'; 
        document.getElementById(upArrowId).style.visibility = 'hidden'; 
        document.getElementById(downArrowId).style.visibility = '';       
    } 
}

! Document.all останавливает IE для начинающих. Также вы не должны проверять visibilty == 'visible', так как он не будет работать с самого начала. (По умолчанию используется "", поэтому вы должны использовать это, если вы явно не установили visibility = "visible" для элемента)

Но прежде всего - Google JQuery! Вы замените все это на element.toggle (), прежде чем вы это узнаете!

1 голос
/ 20 апреля 2010

!document.all исключает IE из кода выполнения вашей функции

...