2009-07-07 2 views
0

У меня есть вопрос, который касается вызова функции в другом исходном файле js.Неопределенная ошибка при вызове функции из другого исходного файла js

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

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

Функции декларируются между документами (функциями) готовых документов.

Есть ли способ избежать неопределенной ошибки ??

это, как я поставил его:

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

}); 

Спасибо, Ричард

+0

Можете ли вы опубликовать исходный код HTML/JS, пожалуйста? –

+0

ok, всего в секундах. если этого недостаточно, я дам ссылку на сайт – Richard

ответ

2

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

Кроме того, не имеет значения, в каком порядке будут загружены ваши файлы, функция будет доступна в любом случае. Пример:

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

Редактировать: выглядит так, как SolutionYogi предсказывал правильный ответ. Но для справки я останусь.

+0

, как @SOLUTION YOGI, предположил, что это, скорее всего, вызвано методом готового документа, который включает в себя функции. Сначала я должен проверить это. – Richard

+0

Это было мое дело: закрыто часовое расследование! – Vale

7

Если вы определили свою функцию внутри вызова метода $ (document) .ready, они не будут видны снаружи. Попытайтесь определить их за пределами готового вызова метода.

$(document).ready(
    function() 
    { 
     var test = function() { alert('test'); }; 

     test(); //It will work here. 

     anotherTest(); //This will also work. 

    } 

); 

function anotherTest() { alert('anotherTest'); }; 

test(); //You can't call test function here because test is defined inside the anonymous function passed to the 'ready' method. 

anotherTest(); // Alerts 'anotherTest'. 

Если это не то, как ваш код выложен, отправьте исходный код, чтобы проблема была идентифицирована.

+0

спасибо, я отредактировал мой оригинальный вопрос. Как вы предложили. Я должен вывести их из готового документа документа. Тогда это будет так. – Richard

+0

Richard, Положите функцию iscookieUsername 'и' chatWith 'за пределы документа. document.ready - это место, где вы помещаете код, который хотите запустить при загрузке веб-страницы. Вы не определяете свои функции там. Попробуйте прочитать некоторые учебники jQuery, чтобы понять больше. – SolutionYogi

+0

да, спасибо, по крайней мере сейчас я теперь это тоже – Richard

0

Используйте google chrome и нажмите F12, чтобы увидеть Инструменты разработчика, прежде чем просматривать эту конкретную страницу. В сети вы можете видеть, какие файлы загружаются, найдите свой скрипт, содержащий вашу функцию. , (Вы также можете фильтровать на Scripts), он должен быть сверху, а ваш скрипт вызова должен быть загружен позже. Если он не загружен, включите этот файл на предыдущую страницу. Надеюсь, что это решит проблему.

Смежные вопросы