Können wir die in einer JS-Datei geschriebene Funktion in einer anderen JS-Datei aufrufen? Kann mir jemand helfen, wie man die Funktion aus einer anderen JS-Datei aufruft?
Können wir die in einer JS-Datei geschriebene Funktion in einer anderen JS-Datei aufrufen? Kann mir jemand helfen, wie man die Funktion aus einer anderen JS-Datei aufruft?
Antworten:
Die Funktion kann so aufgerufen werden, als ob sie sich in derselben JS-Datei befindet, solange die Datei mit der Definition der Funktion vor der ersten Verwendung der Funktion geladen wurde.
Dh
File1.js
function alertNumber(number) {
alert(number);
}
File2.js
function alertOne() {
alertNumber("one");
}
HTML
<head>
....
<script src="File1.js" type="text/javascript"></script>
<script src="File2.js" type="text/javascript"></script>
....
</head>
<body>
....
<script type="text/javascript">
alertOne();
</script>
....
</body>
Der andere Weg wird nicht funktionieren.
Wie von Stuart Wakefield richtig hervorgehoben . Der andere Weg wird auch funktionieren.
HTML
<head>
....
<script src="File2.js" type="text/javascript"></script>
<script src="File1.js" type="text/javascript"></script>
....
</head>
<body>
....
<script type="text/javascript">
alertOne();
</script>
....
</body>
Was nicht funktionieren würde, wäre:
HTML
<head>
....
<script src="File2.js" type="text/javascript"></script>
<script type="text/javascript">
alertOne();
</script>
<script src="File1.js" type="text/javascript"></script>
....
</head>
<body>
....
</body>
Obwohl alertOne
es beim Aufruf definiert wird, verwendet es intern eine Funktion, die noch nicht definiert ist ( alertNumber
).
Die obige Antwort hat eine falsche Annahme, dass die Reihenfolge der Aufnahme der Dateien von Bedeutung ist. Da die alertNumber-Funktion erst aufgerufen wird, wenn die alertOne-Funktion aufgerufen wird. Solange beide Dateien zum Zeitpunkt des Aufrufs von alertOne enthalten sind, spielt die Reihenfolge der Dateien keine Rolle:
[HTML]
<script type="text/javascript" src="file1.js"></script>
<script type="text/javascript" src="file2.js"></script>
<script type="text/javascript">
alertOne( );
</script>
[JS]
// File1.js
function alertNumber( n ) {
alert( n );
};
// File2.js
function alertOne( ) {
alertNumber( "one" );
};
// Inline
alertOne( ); // No errors
Oder es kann wie folgt bestellt werden:
[HTML]
<script type="text/javascript" src="file2.js"></script>
<script type="text/javascript" src="file1.js"></script>
<script type="text/javascript">
alertOne( );
</script>
[JS]
// File2.js
function alertOne( ) {
alertNumber( "one" );
};
// File1.js
function alertNumber( n ) {
alert( n );
};
// Inline
alertOne( ); // No errors
Aber wenn Sie dies tun würden:
[HTML]
<script type="text/javascript" src="file2.js"></script>
<script type="text/javascript">
alertOne( );
</script>
<script type="text/javascript" src="file1.js"></script>
[JS]
// File2.js
function alertOne( ) {
alertNumber( "one" );
};
// Inline
alertOne( ); // Error: alertNumber is not defined
// File1.js
function alertNumber( n ) {
alert( n );
};
Es ist nur wichtig, welche Variablen und Funktionen zum Zeitpunkt der Ausführung verfügbar sind. Wenn eine Funktion definiert ist, führt sie keine der darin deklarierten Variablen aus oder löst sie auf, bis diese Funktion anschließend aufgerufen wird.
Das Einfügen verschiedener Skriptdateien unterscheidet sich nicht von dem Skript in dieser Reihenfolge in derselben Datei, mit Ausnahme von verzögerten Skripten:
<script type="text/javascript" src="myscript.js" defer="defer"></script>
dann musst du vorsichtig sein.
function myfunction() {
und script2: alert();}
Es wird nicht funktionieren. Es stört mich, weil ich versucht habe, eine zu lange JS-Datei zu modularisieren. Siehe stackoverflow.com/questions/20311604/…
this
Kontext gemeinsam nutzen, wenn sich eine der Funktionen in einer Klasse befindet?
this
wird an dem Punkt gebunden, an dem die Funktion aufgerufen wird (es bind
sei denn, sie wird zuvor aufgerufen). Die beiden Funktionen in zwei separaten Dateien teilen den this
Kontext nicht automatisch, im obigen Beispiel haben sie auch keinen this
Kontext, dh window
im nicht strengen oder undefined
im strengen Modus. Sie können festlegen, dass die Funktion im anderen Skript denselben this
Wert aufweist, indem Sie die Funktion entweder als Mitglied des Objekts (dh innerhalb des Konstruktors this.method = myOtherFunc
) zuweisen oder bind verwenden. Bitte posten Sie eine SO-Frage mit mehr Details, wenn Sie eine ausführlichere Antwort benötigen. Prost, Stuart
Wenn alle Dateien enthalten sind, können Sie Eigenschaften von einer Datei zur anderen aufrufen (wie Funktion, Variable, Objekt usw.).
Die js-Funktionen und -Variablen, die Sie in eine .js-Datei schreiben - sagen wir , a.js steht anderen js-Dateien zur Verfügung - sagen wir b.js , solange sowohl a.js als auch b.js mit dem folgenden Include in der Datei enthalten sind Mechanismus (und in derselben Reihenfolge, wenn die Funktion in b.js die in a.js aufruft).
<script language="javascript" src="a.js"> and
<script language="javascript" src="b.js">
ES6: Anstatt viele js-Dateien <script>
in .html einzuschließen, können Sie nur eine Hauptdatei einschließen, z. B. script.js
Attribut type="module"
( Unterstützung ), und script.js
Sie können andere Dateien einschließen:
<script type="module" src="script.js"></script>
Und in script.js
Datei enthalten eine andere Datei wie folgt aus:
import { hello } from './module.js';
...
// alert(hello());
In 'module.js' müssen Sie die zu importierende Funktion / Klasse exportieren
export function hello() {
return "Hello World";
}
Arbeitsbeispiel hier .
Ja, du kannst . Sie müssen beide JS file
auf die .aspx
Seite verweisen
<script language="javascript" type="text/javascript" src="JScript1.js">
</script>
<script language="javascript" type="text/javascript" src="JScript2.js">
</script>
JScript1.js
function ani1() {
alert("1");
ani2();
}
JScript2.js
function ani2() {
alert("2");
}
Sie können die in einer anderen JS-Datei erstellte Funktion aus der Datei aufrufen, in der Sie arbeiten. Dazu müssen Sie zunächst die externe JS-Datei in das HTML-Dokument einfügen.
<html>
<head>
<script type="text/javascript" src='path/to/external/js'></script>
</head>
<body>
........
Die in der externen Javascript-Datei definierte Funktion -
$.fn.yourFunctionName = function(){
alert('function called succesfully for - ' + $(this).html() );
}
Um diese Funktion in Ihrer aktuellen Datei aufzurufen, rufen Sie die Funktion einfach als - auf
......
<script type="text/javascript">
$(function(){
$('#element').yourFunctionName();
});
</script>
Wenn Sie die Parameter an die Funktion übergeben möchten, definieren Sie die Funktion als
$.fn.functionWithParameters = function(parameter1, parameter2){
alert('Parameters passed are - ' + parameter1 + ' , ' + parameter2);
}
Rufen Sie diese Funktion in Ihrer aktuellen Datei als - auf.
$('#element').functionWithParameters('some parameter', 'another parameter');
$.fn
ist es sinnlos , die Aufgabe in eine Dokumentbereitschaftsklausel zu
Hier ist ein aussagekräftigeres Beispiel mit einem angehängten CodePen-Snippet:
1.js
function fn1() {
document.getElementById("result").innerHTML += "fn1 gets called";
}
2.js
function clickedTheButton() {
fn1();
}
index.html
<html>
<head>
</head>
<body>
<button onclick="clickedTheButton()">Click me</button>
<script type="text/javascript" src="1.js"></script>
<script type="text/javascript" src="2.js"></script>
</body>
</html>
Ausgabe
Versuchen Sie dieses CodePen-Snippet: Link .
Für diejenigen, die dies in Node.js tun möchten (Skripte auf der Serverseite ausführen), ist eine andere Option, require
und zu verwenden module.exports
. Hier ist ein kurzes Beispiel, wie Sie ein Modul erstellen und zur Verwendung an anderer Stelle exportieren:
file1.js
const print = (string) => {
console.log(string);
};
exports.print = print;
file2.js
const file1 = require('./file1');
function printOne() {
file1.print("one");
};