我正在使用script from the W3C创建可访问的选项卡面板。当我用脚本加载页面时,出现变量Uncaught TypeError: Cannot read property 'hasAttribute' of undefined的错误tablist,其定义如下:

var tablist = document.querySelectorAll('[role="tablist]')[0];
var tabs, panels;
var delay = determineDelay();


该错误所指的代码:

// Determine delay
function determineDelay () {
    var hasDelay = tablist.hasAttribute('data-delay');
    var delay = 0;

    if (hasDelay) {
        var delayValue = tablist.getAttribute('data-delay');
        if (delayValue) {
            delay = delayValue
        } else {
            delay = 300;
        }
    }

    return delay;
}


HTML tablist应该是:

<div role="tablist" aria-label="Options">
   <button role="tab" aria-selected="true" aria-controls="general-tab" id="general-btn">General</button>
   <button role="tab" aria-selected="false" aria-controls="social-tab" id="social-btn" tabindex="-1">Social Networks</button>
</div>


这是通过WordPress插件加载的,该插件排队为:

wp_enqueue_script( 'enhap-admin-script', plugins_url( '../_js/enhap.js', __FILE__ ), array(), false, true );


我看不到脚本有什么问题。我尝试在控制台中手动键入var命令,并得到相同的结果。

最佳答案

您在选择器字符串中缺少结尾的"。改成:

document.querySelectorAll('[role="tablist"]')[0];

10-06 15:18