Javascript函数创建选项卡在onload期间无法正常工作

时间:2016-12-07 11:14:33

标签: javascript jquery html

我尝试按照此示例为我的网站创建标签: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

任何想法发生了什么?

1 个答案:

答案 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/