Вопрос

На моей главной веб-странице Web (Viewer.aspx) у меня есть бирки сценария JavaScript, как это

<script language="javascript" type="text/javascript">

function initialize() {
     var map = $find('Map1');           
     map.add_mouseMove(mouseMove);  

 }

</script>

В рамках этих тегов сценария у меня есть функция. Можно ли позвонить другую функцию, которая находится в другом теге сценария, как это?

<script language="javascript" type="text/javascript" src="Resources/JavaScript/proj4js-combined.js">

function mouseMove(sender,eventArgs) {
     var source = new Proj4js.Proj('EPSG:3116');
        var dest = new Proj4js.Proj('WGS84');

        var p = new Proj4js.Point(px, py);
        Proj4js.transform(source, dest, p);    
 }

</script>
Это было полезно?

Решение

Согласно вашему комментарию, вот то, о чем говорил TJ - вам нужно повернуть свой второй блок сценария во что-то подобное:

<script type="application/javascript" src="Resources/JavaScript/proj4js-combined.js"></script>
<script type="application/javascript">

function mouseMove(sender,eventArgs) {
     var source = new Proj4js.Proj('EPSG:3116');
        var dest = new Proj4js.Proj('WGS84');

        var p = new Proj4js.Point(px, py);
        Proj4js.transform(source, dest, p);    
 }

</script>

... но вы действительно должны просто переместить встроенный код код (что находится внутри 2-го <script> Тег в моем ответе) на внешний файл JavaScript.


Редактировать 1: Из какого фона программирования вы идете? Если это что-то вроде C # или Java, вам нужно забыть то, что вы знаете о тех, и подходят JavaScript полностью по-разному. JavaScript - это интерпретированный язык, а не компилированный; Среди прочего, это означает, что Порядок, в котором ваши функции объявлены вопросы.

Когда я говорю «декларация функции», я имею в виду все, что выглядит так:

function myNewFunction()
{
   // anything else here
}

Это говорит о переводке JavaScript о новой функции, называемой myNewFunction, чье тело состоит из того, что вьющихся скобках.

Вот пример того, о чем я говорю, когда я говорю, что вы используете функцию, прежде чем вы его заявили. Рассмотрим следующий блок кода (в изоляции от любого другого JavaScript, скажем, во внешнем файле JavaScript):

function foo() // this line declares the function called "foo"
{

}

function bar() // this line declares the function called "bar"
{
    foo(); // this line invokes the previously declared function called "foo"
}

Это будет работать, как ожидалось, потому что foo() был объявлен до того, как вы назвали это. Тем не менее, что (звучит как), вы пытаетесь сделать, это аналогично этому:

function foo() // this line declares the function called "foo"
{
    bar(); // this line tries to invoke the function called "bar"
           // but it hasn't been declared yet! so it's undefined
}

function bar() // this line declares the function called "bar"
{

}

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

* Сноска: Это на самом деле не так, потому что используя этот синтаксис (function foo() { ... }) делает что-то особенное и волшебное в JavaScript. Мой конкретный пример на самом деле будет работать, но это иллюстрирует проблему, которую у вас есть.

Другие советы

Да, это делается довольно регулярно, так как функции JavaScript могут быть введены в другие файлы и натягиваются на страницы, которые работают таким образом.

Ваш второй тег скрипта определяет src. Отказ Содержимое файла .js будет загружено и анализируют, но код внутри тега скрипта ( mouseMove Функция) будет игнорироваться. Если вы хотите как функцию, так и содержимое файла .js, вам нужно отделить их на два разных тега скрипта.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top