• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

IE Probleme beim übergeben von elementen.

Chrizo

Neues Mitglied
Hey ich hab hier in diesem Forum ein Code snippet gefunden der wirklich sehr hilfreich war, doch der Code beinhaltete noch einen großen Fehler.
Nämlich das, dass get.ElementByClass nicht im Internet Explorer erkannt wird.
Ich bitte hier um Hilfe da ich das Problem nicht alleine bewerkstelligen kann.
Vielen Danke im vorraus.
Code:
function HideSpoilers( ) {
                var spoilers = document.getElementsByClassName( "spoiler" );
                for( var i = 0; i < spoilers.length; i++ ) {
                    spoilers[ i ].style.display = "none";
                }
            }
            function PrepareSpoilerButtons( ) {
                // IE ist mal wieder böse und übergibt als this nicht das element, sondern
                // window... Da musst du dir selbst was überlegen, hab gerade keine Lust mehr.
                var SpoilerButtons = document.getElementsByClassName( "BtnSpoiler" );
                for( var i = 0; i < SpoilerButtons.length; i++ ) {
                    if( document.attachEvent ) {
                        SpoilerButtons[ i ].attachEvent( "onclick", ShowSingleSpoiler );
                    } else {
                        SpoilerButtons[ i ].addEventListener( "click", ShowSingleSpoiler, true );
                    }
                }
            }
            
            function ShowSingleSpoiler( ) {
                HideSpoilers( );
                this.nextSibling.nextSibling.style.display = "block";
            }
            
            if( !document.getElementsByClassName ) { // IE kennt die Funktion nicht...
                document.getElementsByClassName = function( className ) {
                    var all = document.getElementsByTagName( "*" ), ret = [];
                    for( var i = 0; i < all.length; i++ ) {
                        if( all[ i ].className === className )
                            ret.push( all[ i ] );
                    }
                    return ret;
                };
            }
            
            if( document.attachEvent ) {
                window.attachEvent( "onload", HideSpoilers );
                window.attachEvent( "onload", PrepareSpoilerButtons );
            } else {
                window.addEventListener( "load", HideSpoilers, true );
                window.addEventListener( "load", PrepareSpoilerButtons, true );
            }
 
Also da ich früher (vor ein paar Jahren) zu Flash Actionscript 2/3 geflüchtet bin, um der Unfähigkeit der Browserhersteller aus dem Weg zu gehen, kann ich dir leider keine Lösung ohne jQuery präsentieren. Allerdings spricht bei einer normalen Website nichts gegen die Verwendung von jQuery und bringt nur Vorteile mit sich.

So könnte man dein Problem bspw. lösen:

PHP:
var spoilers = $('.spoiler')[0]; // Erstes gefundenes Element
 
Zurück
Oben