2017-04-11 3 views
0

Ich weiß, dass dies viel gefragt wurde, aber es ist Tage der Forschung und ich bin immer noch mit dem gleichen Fehler stecken. Ich kann nicht die perfekte Lösung finden.Recurring Uncaught ReferenceError: Funktion ist nicht definiert

So habe ich eine button, dass ich mit einer JS Funktion auf einer externen Datei an die Macht versuche (scorecards.js) befindet sich in js folder ..

<a id="generateScorecardBtn" class="btn orange lighten-1 btn-large" onclick="generateScorecard(document.getElementById('uploadAppPerfLog').value, document.getElementById('uploadDbPerfLog').value);"> 

Aber ich immer noch diese Fehlermeldung erhalten, wenn ich das klicken

Taste
Uncaught ReferenceError: generateScorecard is not defined 

Auch wenn ich es richtig verwiesen wird auf der HTML-<head>

<script src="js/scorecards.js" type="text/javascript"></script> 

Bitte helfen Sie mir, dies zu untersuchen. Ich kompiliere die App auch mit der node.js Eingabeaufforderung.

Vielen Dank!

Link--scorecard.js: https://drive.google.com/open?id=0BzZ5wr0I2306VGJzTUZTMDY4eHc

+0

Wo ist 'generateScorecard()' Definition? –

+0

in Ihrem 'js/scorecards.js' Dateiumbruch innerhalb' $ (document) .ready (function() {..}); '(außer von Funktion) –

+0

aber meine' externe js' Datei enthält nur 'function {}' Codes, die ich auf meiner 'index.html' verwenden möchte. Ist das, was _except von function_ oben zu bedeuten hat? @AlivetoDie – JPaulPunzalan

Antwort

0

Diese Funktion:

onclick="generateScorecard(...);" 

sollte im globalen Bereich (Fenster) sein wie Sie es direkt Referenzierung werden. Wenn der Fehler sagt Uncaught ReferenceError: generateScorecard ist nicht definiert Das bedeutet, es ist nicht im globalen Bereich verfügbar, wie Sie es erraten werden.

Sie müssen prüfen, ob die Funktion in einem Namensraum wie gesetzt worden ist:

var $$global = $$global || {}; 

$$global.generateScorecard = function(a, b){}; 

Wenn dies der Fall ist, dann wird die Funktion als

onclick="$$global.generateScorecard(...);" 
+0

Hi @Jai Ich habe die Lösung ausprobiert und sie wirft jetzt 'Uncaught ReferenceError: $$ global ist nicht definiert'. In meiner externen 'js' Datei habe ich nur Blöcke von' function {} 'Code, die in' index.html' verwendet werden. – JPaulPunzalan

+0

@JPaulPunzalan Ich habe dir einen gefälschten globalen Namensraum gegeben. Es könnte etwas anderes in deinem Zustand sein. Können Sie in der Frage den Code "scorecards.js" posten? – Jai

+0

Hallo @Jai Ich habe die 'js' Datei auf Google Drive hochgeladen. Bitte überprüfen Sie die Bearbeitung unter der Frage. Ich danke dir sehr! – JPaulPunzalan

0

Meine erste Vermutung verfügbar sein (falsch , siehe unten) ist, dass die js-Datei nicht geladen wird, da sich "js /" nicht im aktuellen Verzeichnis befindet. Überprüfen Sie, ob Sie den richtigen relativen Pfad haben.

Aber wie auch immer, da dies eine Electron-App ist, sollten Sie die Chrome-Dev-Tools öffnen und sehen, welche Konsolenfehler Sie bekommen, oder sehen Sie auf der Registerkarte Netzwerk nach, ob sie geladen wird.

Schauen Sie sich toggleDevTools an, damit die Chrome-Dev-Tools beim Start angezeigt werden oder wenn Sie eine Taste drücken.

P.S. Ich habe das gemacht, und Ihr Code hat einen Syntaxfehler! I.e. Der Pfad ist korrekt, aber der Dateiinhalt ist ungültig, weshalb er beim Klicken auf die Schaltfläche nicht existiert. In processDataToDictionary() fehlt das "/" am Ende einer Regex.

csv.split(/\r\n|\n); 
Verwandte Themen