2016-04-18 7 views
-1

Entschuldigen Sie die Mühe mit dieser Art von Fragen, ich habe versucht, nach einer Lösung für mein Problem zu suchen, aber konnte keine Anwendung finden.Funktion nicht definiert Javascript (Basic)

Ich versuche, eine Klasse auf ein Element zu wechseln, indem Sie auf ein anderes Element klicken, um dies zu tun:

var myCanvas = document.querySelector('main'); 

function btOne() { 
    myCanvas.classList.toggle("one"); 
} 

ich die div i definiert eine Klasse und definiert die Funktion hinzufügen wollte.

<main></main> 
<div class="pickers"> 
    <div class="pick one" onclick="btOne()"></div> 
</div> 

Er sagt, die Funktion nicht definiert ist, wenn ich die div klicken. Ich kann nicht herausfinden, was damit nicht stimmt. Überprüfen Sie meine DEMO, um wirklich zu sehen, was vor sich geht.

Nebenbei bemerkt, ich versuche, keine Bibliotheken wie jQuery zu verwenden.

+0

Nun, was * ist * falsch? Was macht es, was macht es nicht? Irgendwelche Fehlermeldungen in deiner Konsole? – deceze

+0

Es sagt, dass die Funktion nicht definiert ist, wenn ich auf das div klicke. –

+0

jQuery ist "nur Javascript". –

Antwort

4

JSFiddle wird der Code in einem onload Rückruf Einwickeln der function btOne verursacht innerhalb der Funktion scoped werden und nicht implizit global scoped.

Wenn Sie btOne in globalen Bereich haben möchten, müssen Sie dies explizit zuweisen:

window.btOne = btOne; 

updated fiddle

+0

Warum in aller Welt würden Sie vorschlagen, dass ... keine Code-Änderungen vorgenommen werden müssen, nur den Code an der Unterseite des Körpers und es funktioniert. Auf der Geige funktioniert der genaue Code, wenn Sie den Lasttyp in nowrap-body –

+0

@Pamblam ändern, es ist besser, explizit in intent und portable zu sein, als sich auf implizites Verhalten zu verlassen, das plötzlich unerwartet bricht. – zzzzBov

+0

@Pamblam, und es gibt viele weitere Probleme mit dem Code, die Verwendung von Inline-Event-Handler überhaupt ist eine schlechte Idee, aber diese Frage war, wie das Problem einer fehlenden globalen Referenz zu beheben. – zzzzBov