我正在使用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];