2016-09-02 4 views
1

Ich habe ein Projekt, das zwei Dateien mit dem gleichen Namen, data.php und data.js hat. Ich versuche, eine Funktion in data.js von list.js auszuführen, die eine andere Datei innerhalb des Projekts ist.Aufruf einer Funktion aus einer anderen JavaScript-Datei ohne eval()

Der folgende Code zeigt drei verschiedene Versuche, die ich versucht haben und keine von ihnen arbeiten. Der erste gibt einen Fehler aus, der in der Datei data.php keine Funktion für conditionTemplate angibt. die anderen beiden werfen den Fehler Uncaught TypeError: Kann die Eigenschaft 'condtionTemplate' von undefined nicht lesen.

list.js

if (this.filter == "correct") { 
    window["condtionTemplate"](true); 
    window["data"]["condtionTemplate"](true); 
    window["data.js"]["condtionTemplate"](true); 
} 

Dies ist die Funktion i

data.js nach innen data.js zu bekommen versuche

list = new listFiler(); 
list.prototype.condtionTemplate = function(status) { 
    if (status) { 
     main_buttons.enabled("next", false); 
    } else { 
     main_buttons.enabled("back", true); 
    } 
} 

data.php

<body>  
    <script src="javascript/list.js?1" type="text/javascript"></script> 
    <script src="javascript/data.js?1" type="text/javascript"></script> 
</body> 
+0

laden Sie irgendwo data.js? –

+0

Was ist 'liste'? der Typ, nicht die Datei. – Thomas

+0

@thomas hat die Frage aktualisiert. data.php – Bish25

Antwort

1

Erste Änderung der Last, um

<script src="javascript/data.js?1" type="text/javascript"></script> 
<script src="javascript/list.js?1" type="text/javascript"></script> 

einen Prototyp für die Funktion listFiler hinzufügen.

listFiler.prototype.condtionTemplate = function(status) { 
    if (status) { 
     main_buttons.enabled("next", false); 
    } else { 
     main_buttons.enabled("back", true); 
    } 
}; 

eine Instanz

var list = new listFiler(); 

mit condtionTemplate Gebrauch.

if (this.filter == "correct") { 
    list.condtionTemplate(true); 
} 
+1

Dank ich denke, ich habe versucht, Dinge zu komplizieren. – Bish25

0

HTML:

<script src="data.js" /> 
<script src="list.js" /> 
<script> 
    condtionTemplate() ... 
</script> 
+0

Danke für die Antwort. das würde aber in diesem Szenario nicht funktionieren. Ich muss ConditionTemplate aus der Datei list.js ausführen. – Bish25

+0

Es gibt keine Möglichkeit, das zu tun, sorry. –

+0

es funktioniert, wenn ich Eval(), aber aus der Forschung das ist keine gute Praxis – Bish25

Verwandte Themen