我尝试按照此示例为我的网站创建标签:http://www.w3schools.com/howto/howto_js_tabs.asp
一切正常,但打开默认标记不能正常工作。该选项卡打开,但它没有正确设置标题颜色。
这是我的tablinks的HTML:
<div class="wrap" id="wrap">
<ul class="tab">
<li><a href="javascript:void(0)" class="tablinks" onclick="openTab(event, 'Protons')" id="onDefault">Ions</a></li>
<li><a href="javascript:void(0)" class="tablinks" onclick="openTab(event, 'Electrons')">Electrons, X-rays and CME's</a></li>
</ul>
</div>
这是标签的脚本
function openTab(evt, tab) {
var i, tabcontent, tablinks;
tabcontent = document.getElementsByClassName("tabcontent");
for (i=0;i<tabcontent.length;i++){
tabcontent[i].style.display="none";
}
tablinks = document.getElementsByClassName("tablinks");
for (var i = 0; i < tablinks.length; i++) {
tablinks[i].className = tablinks[i].className.replace(" active", "");
}
document.getElementById(tab).style.display="block";
evt.currentTarget.tab += " active";
}
我目前正在使用
点击活动<script>document.getElementById('onDefault').click();</script>
这不会产生任何错误消息,但是当我使用Jquery时,即:
<script>$('#onDefault').click()</script>
我收到错误说:
scripts.js:110 Uncaught TypeError: Cannot read property 'tab' of undefined
任何想法发生了什么?
答案 0 :(得分:0)
jquery的数量有点不存在,并且该示例显然不使用jquery - 因此我称之为错误标记。
<script>document.getElementById('onDefault').click();</script>
第一个不会抛出错误,因为currentTarget是普通事件的属性。一个不存在的属性.tab被置于其上,但什么也没做。
<script>$('#onDefault').click()</script>
第二个(jquery)有一个内置属性currentTarget,在这种情况下是未定义的 - 导致写入错误。
任何想法发生了什么?
你没有定义标签,或者jquery是它的所有者..究竟在哪里?
evt。 currentTarget.tab + =“active”;
因此,您获得了合理的浏览器错误:
scripts.js:110 Uncaught TypeError: Cannot read property 'tab' of undefined
在此处的链接示例中,扩展了className: http://www.w3schools.com/howto/howto_js_tabs.asp
evt.currentTarget.className + =“active”;
// Show the current tab, and add an "active" class to the link that opened the tab
document.getElementById(cityName).style.display = "block";
evt.currentTarget.className += " active";
根据您尝试实现的目标,这可能会也可能不正确。
https://developer.mozilla.org/en-US/docs/Web/API/Event/currentTarget https://api.jquery.com/event.currentTarget/