Question

Dans ma page Web (Viewer.aspx) J'ai une balise de script javascript comme ceci

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

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

 }

</script>

Dans ces balises de script que j'ai une fonction. Est-il possible d'appeler une autre fonction qui est dans une balise de script différent comme celui-ci?

<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>
Était-ce utile?

La solution

Selon votre commentaire, voici ce que T.J. était de parler - vous avez besoin pour transformer votre deuxième bloc de script dans quelque chose comme ceci:

<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>

... mais vous devez déplacer vraiment juste le bloc de code en ligne (ce qui est à l'intérieur de la balise 2ème <script> dans ma réponse) à un fichier Javascript externe.


Modifier 1: Qu'est-ce que vous venez de l'arrière-plan de programmation? Si elle est quelque chose comme C # ou Java, vous aurez besoin d'oublier ce que vous connaissez ceux-ci et l'approche Javascript complètement différemment. Javascript est un langage interprété, et non une compilation; entre autres choses, cela signifie que l'ordre dans lequel vos fonctions sont déclarées matières .

Quand je dis « déclaration de fonction, » je tout moyen qui ressemble à ceci:

function myNewFunction()
{
   // anything else here
}

indique à l'interpréteur Javascript d'une nouvelle fonction, appelée myNewFunction, dont le corps se compose de tout ce qui est dans les accolades.

Voici un exemple de ce que je parle quand je dis que vous utilisez une fonction avant que vous avez déclarée. Considérons le bloc de code suivant (indépendamment de tout autre Javascript, par exemple, dans un fichier Javascript externe):

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

Ce travail de volonté comme prévu, parce que foo() a été déclaré avant vous l'avez appelé. Cependant, ce que (cela ressemble) que vous essayez de faire est analogue à ceci:

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"
{

}

Si vous deviez exécuter ce deuxième extrait de code JavaScript, il ne fonctionnerait pas, parce que vous appelez une fonction avant qu'elle ne soit déclarée. *

* Note: ce n'est pas réellement le cas, car en utilisant cette syntaxe (function foo() { ... }) fait spécial et magique quelque chose en Javascript. Mon exemple particulier sera fait le travail, mais il illustre le problème que vous rencontrez.

Autres conseils

Oui, cela se fait assez régulièrement fonctions Javascript peuvent être mis dans d'autres fichiers et tiré dans les pages qui fonctionnent de cette façon.

Votre deuxième balise de script spécifie un src. Le contenu du fichier .js seront chargés et analysés, mais le code dans la balise de script (la fonction de mouseMove) seront ignorées. Si vous voulez à la fois la fonction et le contenu du fichier .js, vous devez les séparer en deux balises de script différentes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top