borisbaer: JavaScript greift auf bereits entfernte DOM-Elemente zu?

Beitrag lesen

problematische Seite

Ich habe den Code ein wenig angepasst zugunsten von DRY. Sorry wegen der Doppelzeiligkeit.

const turnPage = ( right ) => {

    let doOnce;

    let page = document.querySelectorAll( '.page' );

    page.forEach( node => {

        if ( node.getAttribute( 'aria-selected' ) === 'true' && !doOnce ) {

            if ( right === true ) {

                if ( !node.nextElementSibling ) return;

                node.nextElementSibling.setAttribute( 'aria-selected', true );

            } else {

                if ( !node.previousElementSibling ) return;

                node.previousElementSibling.setAttribute( 'aria-selected', true );

            }

            node.removeAttribute( 'aria-selected' ); 

            doOnce = true;

        }

    });

}

const changePage = () => {

	document.body.addEventListener( 'keydown', ( e ) => {

		var key = e.keyCode;

		// r i g h t - a r r o w - k e y

		if ( key === 39 ) { turnPage( true ); }

		// l e f t - a r r o w - k e y

		if ( key === 37 ) { turnPage(); }

	});

};

// R U N - S C R I P T

document.addEventListener( 'DOMContentLoaded', () => {

	if ( document.querySelector( '.change-page' ) )

        changePage();

});