Можно ли вызвать функцию, написанную на одном JavaScript в другом JS файле?

Можно ли вызвать функцию, записанную в одном JS файле в другом JS файле? Может ли кто-нибудь помочь мне, как вызвать функцию из другого JS файла?

Ответ 1

Функция может быть вызвана так, как если бы она находилась в том же файле JS, пока файл, содержащий определение функции, загружается до первого использования функции.

т.е.

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>

Другой способ не будет работать. Как правильно указано Стюартом Уэйкфилдом. Будет работать и другой способ.

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>

Что не будет работать:

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>

Как будто alertOne определяется при вызове, внутри он использует функцию, которая еще не определена (alertNumber).

Ответ 2

В приведенном выше ответе неверное предположение о том, что порядок включения файлов имеет значение. Поскольку функция alertNumber не вызывается до тех пор, пока не вызывается функция alertOne. До тех пор, пока оба файла включены во время alertOne называется порядок файлов не имеет значения:

[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

Или его можно упорядочить следующим образом:

[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

Но если вы должны это сделать:

[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 );
};

Это касается только переменных и функций, доступных на момент выполнения. Когда функция определена, она не выполняет или не разрешает любую из объявленных переменных, пока эта функция не будет вызвана впоследствии.

Включение различных файлов script ничем не отличается от script, находящихся в этом порядке в одном файле, за исключением отложенных сценариев:

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

тогда вам нужно быть осторожным.

Ответ 3

Пока обе страницы ссылаются на веб-страницу, да.

Вы просто вызываете функции так, как будто они находятся в одном JS файле.

Ответ 4

Если все файлы включены, вы можете вызывать свойства от одного файла к другому (например, функция, переменная, объект и т.д.)

Функции js и переменные, которые вы пишете в одном файле .js -   скажем, a.js будет доступен для других js файлов - скажем, b.js as   если оба файла a.js и b.js включены в файл   используя следующий включенный механизм (и в том же порядке, если функция из b.js вызывает одно в a.js).

<script language="javascript" src="a.js"> and 
<script language="javascript" src="b.js">

Ответ 5

да, вы можете. вам нужно отнести обе JS file к странице .aspx

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

Ответ 6

Вы можете вызвать функцию, созданную в другом файле js из файла, в котором вы работаете. Поэтому для этого сначала вам нужно добавить внешний файл js в html-документ как -

<html>
<head>
    <script type="text/javascript" src='path/to/external/js'></script>
</head>
<body>
........

Функция, определенная во внешнем файле javascript -

$.fn.yourFunctionName = function(){
    alert('function called succesfully for - ' + $(this).html() );
}

Чтобы вызвать эту функцию в текущем файле, просто вызовите функцию как -

......
<script type="text/javascript">
    $(function(){
        $('#element').yourFunctionName();
    });
</script>

Если вы хотите передать параметры функции, тогда определите функцию как -

$.fn.functionWithParameters = function(parameter1, parameter2){
        alert('Parameters passed are - ' + parameter1 + ' , ' + parameter2);
}

И вызовите эту функцию в вашем текущем файле как -

$('#element').functionWithParameters('some parameter', 'another parameter');