2016-11-12 2 views
2

у нас есть два js fie, test-1.js, test-2.js.

<script type="text/javascript" src="test-2.js"></script> 
<script type="text/javascript" src="test-1.js"></script> 

В тест-1.js код

$(document).ready(function(){ 
    function test_alert(){ alert("hiii"); } 
     }); 

В тест-2.js

$(document).ready(function(){ 
    function test_alert_2(){ 
      test_alert(); 
      alert("helloo"); 
     } 

     }); 

но test_alert() не работает в тестовом 2.js. Как это решить? Почему это не работает?

, чтобы решить эту проблему я переставить

<script type="text/javascript" src="test-1.js"></script> 
<script type="text/javascript" src="test-2.js"></script> 

Теперь же, не working.I не может удалить document.ready().

Поэтому мне нужно решение без удаления document.ready()

Пожалуйста, помогите.

+0

является 'test_alert()' работает? – mrid

+0

есть. Он работает –

ответ

1

звонок test-1.js до test-2.js.

Пример

<script type="text/javascript" src="test-1.js"></script> 
<script type="text/javascript" src="test-2.js"></script> 
+0

Я редактировал вопрос. Пожалуйста, прочитайте –

+0

. Не создавайте функцию в $ (document) .ready (function() {}); создайте функцию вне ее, и если вы хотите запустить функцию, то $ (документ).ready (function() { test_alert(); }); – shubham715

0

Если вы хотите использовать код из test-1.js в test-2.js вы должны загрузить test-1.js первый. JavaScript выполняется последовательно для синхронного кода. Таким образом, вы не можете получить доступ к коду из другой области (например, файла), если этот код еще не был выполнен.

+0

Я редактировал вопрос. Пожалуйста, прочитайте –

+0

Вы изменили код файлов, так что это * технически * другой вопрос сейчас ... – Dymos

0

Добавляем этот второй ответ, потому что вы изменили порядок, чтобы быть правильным, но затем также изменили содержимое скриптов. Поскольку оба они содержат $(document).ready(function() {...});, где вы создаете функции, это означает, что функции, которые вы создаете, существуют только в области этой функции, например.

function foo() { 
 
    return 1; 
 
} 
 

 
$(document).ready(function() { 
 
    // this is a new scope, functions created here will not be accessible outside of it. 
 
    function bar() { 
 
    return 2; 
 
    } 
 
}); 
 

 
foo(); // 1 
 
bar(); // Error: undefined is not a function
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

0

Здесь у вас есть два файла JavaScript, и вы используете функцию в тестовом-2.js файл, который присутствует в тестовой-1.js функции file.Your test_alert не работает, потому что вы вызвали этот functin перед полностью загруженным файлом js. Из-за задержки загрузки файла test_alert() не работает.

Теперь вы можете использовать window.setTimeout() для решения этой проблемы. как: -

$(document).ready(function(){ 
    function test_alert_2(){ 
     window.setTimeout(function(){ 
      test_alert(); 
      alert("helloo"); 
     },1000); 

    } 

}); 

Через этого кода test_alert() будет вызываться через одну секунду нагрузки сценария. Я вещь, это поможет вам.