2010-08-06 2 views
1

Prototype (및 script.aculo.us) 자바 스크립트 라이브러리를 사용하고 있습니다. "표준으로 제공되는"레일즈와 함께 제공되며 다음과 같은 문제가 있습니다. 니펫을 :Javascript Prototype Internet Explorer에서 .visible() 메소드가 작동하지 않습니다.

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}) 
    } 
} 

이 조각은 사용자가 카드 이름의 목록을 지정하거나 임의의 선택을하도록 서버를두고 싶어 여부를 제어하는 ​​'game_random_select'체크 박스 onClick을 발생합니다. 관련없는 세트를 숨기고 관련 세트를 표시해야합니다.

이 기능은 FireFox에서 제대로 작동하지만 Internet Explorer (IE 8 테스트)에서는 작동하지 않습니다. if-test 행 중 하나에서 "Object가이 속성 또는 메서드를 지원하지 않습니다"라는 오류가 발생합니다. JS 디버거를 사용하면 seldiv.visible()이 작동하지 않는다는 것을 나타냅니다.

IE에서 요소의 가시성을 어떻게 감지 할 수 있습니까? 반드시 Prototype은 IE와 완벽하게 호환되어야합니까? 또는 Prototype을 사용하여 관리 할 수 ​​없으며 jQuery로 전환해야합니다. Rails가이를 준수해야하므로 분명히 노력해야합니다.

+0

HTML도 표시 할 수 있습니까? –

답변

2

허. API 문서를 읽고 내가하지 않은 것을 찾아 내서 감사히 나눴습니다.

seldiv.visible()은 작동하지 않지만 $('card_selects').visible()가 있습니다.

0

당신은 요소가 nonedisplay 재산이있는 경우가 null을 반환합니다 getStylehttp://www.prototypejs.org/api/element/getStyle 시도 할 수 있습니다.

+0

위의 방법대로 실행하면 아무런 차이가 없습니다. 하지만 API 참조는 내가 Prototype을 잘못 사용하고 있다는 것을 지적 했으므로이를 해결했습니다. 내 대답을 보라. – Chowlett

관련 문제