2009-07-07 4 views
0

J'ai une question qui concerne l'appel d'une fonction dans un autre fichier source js.Erreur non définie lors de l'appel de la fonction d'un autre fichier source js

J'ai déclaré le fichier source avant le fichier avec la fonction qui appelle cette fonction particulière . Je pensais que cela fonctionnerait, mais cela donne une erreur indéfinie.

J'ai aussi une fonction dans un fichier qui appelle une fonction dans un fichier source déclaré plus tard. Cela concernerait les mêmes fichiers mais l'inverse.

Les fonctions sont déclarées entre les instructions de document prêt (fonctions).

Y at-il un moyen d'éviter l'erreur indéfinie?

c'est ainsi que je l'ai mis en place:

<script type="text/javascript" src="includes/livetabs.js"></script> 
<script type="text/javascript" src="includes/chat.js"></script> 


//this is in the chat.js file 
$(document).ready(function(){ 

function chatWith(chatuser) { 
    check=iscookieUsername(); 
    if (!check){ 
      chatusersuspended=chatuser; 
      showchatinlogform(); 
    } 
    createChatBox(chatuser); 
    $("#chatbox_"+chatuser+" .chatboxtextarea").focus(); 
} 


}); 

//this is in the livetabs.js file 
$(document).ready(function(){ 

function iscookieUsername(){ 
     if (!tbusername){ 

      return false; 
     } 
     if (issessionusername){//flag if session has already been set 

      return true; 
     } 
     $.ajax({ 
      url: "includes/livetabs.php", 
      data: ({username: tbusername, action: "setsessionusername"}), 
      cache: false, 
      type: "POST", 
      dataType: "json", 
      success: function(data) { 
      //store username in php session 
      //some personal user preferences returned 
      usernamecookie=data.cookie; 
      trackuser=data.track; 
      issessionusername=1; 
     }}); 

     return true; 
    } 

}); 

Merci, Richard

+0

Pouvez-vous poster du code source HTML/JS, s'il vous plaît? –

+0

ok, juste une seconde. si ce n'est pas assez je vais donner un lien vers le site – Richard

Répondre

2

Il est probable que votre premier fichier source, celui qui contient la fonction que vous voulez appeler, a une erreur de syntaxe empêche la fonction d'être disponible.

En outre, peu importe l'ordre dans lequel vos fichiers sont chargés, la fonction sera disponible de toute façon. Exemple:

function foo() { alert('foo!'); } 
foo(); 
bar(); 
function bar() { alert('bar!'); } 

Édition: ressemble à SolutionYogi a prédit la bonne réponse. Mais pour référence, je vais laisser le mien.

+0

comme @SOLUTION YOGI suggéré, il est probablement causé par la méthode document prêt qui enferme les fonctions. Je vais devoir vérifier cela en premier. – Richard

+0

C'était mon cas: fermé une heure d'enquête! – Vale

7

Si vous avez défini votre fonction dans l'appel de méthode $ (document) .ready, ils ne seront pas visibles de l'extérieur. Essayez de les définir en dehors de l'appel de la méthode ready. Si ce n'est pas le format de votre code, veuillez publier votre code source afin que le problème puisse être identifié.

+0

merci, j'ai édité ma question originale.Comme vous avez suggéré. Je dois les sortir de la méthode document prêt. Ce serait alors. – Richard

+0

Richard, Mettez les fonctions 'iscookieUsername' et 'chatWith' en dehors du document prêt. Document.ready est l'endroit où vous placez le code que vous souhaitez exécuter lorsque la page Web a été chargée. Vous ne définissez pas vos fonctions là-bas. S'il vous plaît essayez de lire quelques tutoriels jQuery pour en savoir plus. – SolutionYogi

+0

oui, merci, au moins maintenant je maintenant aussi – Richard

0

Utilisez google chrome et appuyez sur F12 pour voir les outils de développement avant de parcourir cette page en particulier. Dans Réseau, vous pouvez voir quels fichiers sont chargés de rechercher votre script contenant votre fonction. . (Vous pouvez aussi filtrer sur les scripts) il devrait être sur le dessus et votre script appelant devrait être chargé plus tard. S'il n'est pas chargé, incluez ce fichier dans votre page plus tôt. J'espère que cela va résoudre le problème.

Questions connexes