我试图在按钮单击上切换覆盖。
在同一类下添加了这两个按钮并调用此函数之后,JS根本无法完成它。
我不确定出现什么问题:

document.getElementsByClassName( 'trigger-overlay' )


或者别的地方?

如果我将其保留为document.getElementById( 'trigger-overlay' )并在html中切换到id而不是class,则仅适用于1个元素。

金田卡在这里。

谢谢,
麦可

<p><button class="trigger-overlay" type="button">Open Overlay</button></p>
<p><button class="trigger-overlay" type="button">Open Overlay2</button></p>


和js功能:

    (function() {
    var triggerBttn = document.getElementsByClassName( 'trigger-overlay' ),
        overlay = document.querySelector( 'div.overlay' ),
        closeBttn = overlay.querySelector( 'button.overlay-close' );
        transEndEventNames = {
            'WebkitTransition': 'webkitTransitionEnd',
            'MozTransition': 'transitionend',
            'OTransition': 'oTransitionEnd',
            'msTransition': 'MSTransitionEnd',
            'transition': 'transitionend'
        },
        transEndEventName = transEndEventNames[ Modernizr.prefixed( 'transition' ) ],
        support = { transitions : Modernizr.csstransitions };

    function toggleOverlay() {
        if( classie.has( overlay, 'open' ) ) {
            classie.remove( overlay, 'open' );
            classie.add( overlay, 'close' );
            var onEndTransitionFn = function( ev ) {
                if( support.transitions ) {
                    if( ev.propertyName !== 'visibility' ) return;
                    this.removeEventListener( transEndEventName, onEndTransitionFn );
                }
                classie.remove( overlay, 'close' );
            };
            if( support.transitions ) {
                overlay.addEventListener( transEndEventName, onEndTransitionFn );
            }
            else {
                onEndTransitionFn();
            }
        }
        else if( !classie.has( overlay, 'close' ) ) {
            classie.add( overlay, 'open' );
        }
    }

    triggerBttn.addEventListener( 'click', toggleOverlay );
    closeBttn.addEventListener( 'click', toggleOverlay );
})();

最佳答案

triggerBttn是一个数组。在这里您需要像数组一样使用它...如下

var triggerBttn = document.getElementsByClassName( 'trigger-overlay' ),


for(var i=0; i < triggerBttn.length ; i++)
{
  triggerBttn[i].addEventListener( 'click', toggleOverlay );
}

10-07 13:31
查看更多