2016-12-07 2 views
-1

Ich habe versucht, diesem Beispiel zu folgen Registerkarten für die eigene Webseite zu erstellen: http://www.w3schools.com/howto/howto_js_tabs.aspJavascript-Funktion Erstellen von Tabs funktioniert nicht richtig bei onload

Alles funktioniert gut, aber öffnet die Standard-Tag nicht so funktioniert, wie es sollte. Die Registerkarte wird geöffnet, aber die Kopfzeilenfarbe wird nicht korrekt festgelegt.

Hier ist mein HTML für die tablinks:

<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> 

und hier ist das Skript für die Registerkarten

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"; 
} 

ich derzeit Klicken auf das Ereignis mit

<script>document.getElementById('onDefault').click();</script> 

Dies gilt nicht produzieren irgendwelche Fehlermeldungen, aber wenn ich Jquery, dh verwenden:

<script>$('#onDefault').click()</script> 

Ich erhalte eine Fehlermeldung, dass:

scripts.js:110 Uncaught TypeError: Cannot read property 'tab' of undefined 

Irgendwelche Ideen, was los ist?

+0

Versuchen Ihres Browsers JavaScript-Debugger (in Bruch + Step-Through-Modus). Sie werden das Problem leicht finden. – Dai

+2

_ "Ich klicke gerade auf das Ereignis mit' '" _ - es gibt nichts in diesem Code, das einen Klick auslösen würde, es wird nur der Verweis auf ein Element über sein Ich würde. – CBroe

+0

Ich denke der Fehler liegt 'evt.currentTarget.tab + =" active ";' hier. ** Seitlicher Tipp **: Verwenden Sie [jQueryUI Tabs] (https: // jqueryui.com/tabs /) – philantrovert

Antwort

0

Die Menge der jQuery ist irgendwie nicht existent und das Beispiel verwendet eindeutig keine jquery - daher würde ich es falsch nennen.

Die erste gibt keinen Fehler aus, da currentTarget eine Eigenschaft des normalen Ereignisses ist. Eine nicht vorhandene Eigenschaft .tab wird darauf gesetzt, tut aber nichts.

<script>$('#onDefault').click()</script> 

die zweite (jquery) eine Eigenschaft in current gebaut, die in diesem Fall nicht definiert ist - zum geschriebenen Fehler führen.

Any ideas what's going on?

Sie nicht Registerkarte definiert oder im Fall jquery seinen Besitzer .. wo genau?

evt.currentTarget.tab += " active";

So erhalten Sie den Fehler gerechtfertigt Browser:

scripts.js:110 Uncaught TypeError: Cannot read property 'tab' of undefined 

Im verknüpft Beispiel an dieser Stelle die classname erweitert: 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"; 

Je nachdem, was Sie versuchen, dies zu erreichen, könnte oder könnte nicht korrekt sein.

https://developer.mozilla.org/en-US/docs/Web/API/Event/currentTarget https://api.jquery.com/event.currentTarget/

Verwandte Themen