2010-08-06 4 views
1

Я использую библиотеку JavaScript Prototype (и script.aculo.us) - поскольку это то, что поставляется с Rails «как стандарт» - и имеет проблему со следующим фрагмент кода:Javascript Prototype .visible() метод, не работающий в Internet Explorer

function show_hide_selects() 
{ 
    chkbox = document.getElementById('game_random_select') 
    seldiv = document.getElementById('card_selects') 

    if (chkbox.checked && seldiv.visible()) 
    { 
    Effect.BlindUp('card_selects', {duration: 0.5}) 
    Effect.BlindDown('random_options', {duration: 0.5}) 
    } 
    else if (!chkbox.checked && !seldiv.visible()) 
    { 
    Effect.BlindUp('random_options', {duration: 0.5}) 
    Effect.BlindDown('card_selects', {duration: 0.75}) 
    } 
} 

Этот фрагмент кода обжигают onClick для «game_random_select» флажок, который управляет хочет ли пользователь указать список карт-имен, или оставить на сервере, чтобы сделать случайный выбор. Он должен скрывать нерелевантный набор элементов формы и показывать соответствующий набор.

Это прекрасно работает в FireFox, но не работает в Internet Explorer (проверен IE 8). Он выдает ошибку «Объект не поддерживает это свойство или метод» на одной из строк if-test; использование JS-отладчика указывает, что это seldiv.visible(), что не работает.

Как определить видимость элемента в IE - возможно, Prototype должен полностью совместим с IE? Или я никогда не смогу справиться с прототипом, и я должен переключиться на jQuery, что, очевидно, будет «Усилиями», так как мне нужно будет также управлять Rails.

+0

Вы также можете показать HTML? –

ответ

2

Huh. Сортировало это самостоятельно, благодаря чтению документации API и обнаружению чего-то, чего я не делал.

seldiv.visible() не работает, но $('card_selects').visible().

0

Вы можете попробовать getStylehttp://www.prototypejs.org/api/element/getStyle, он будет возвращать null если элемент имеет display свойство none.

+0

Запустите путь, я его выше, это не имеет значения. Но ссылка API указывала где-то, что я неправильно использую Prototype, поэтому я решил это. См. Мой собственный ответ. – Chowlett

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