2017-01-04 22 views
0

У меня есть файл index.phpФункция, определенная в первом JS файл не работает в другом файле JS

<!DOCTYPE HTML> 
<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
<script src="test1.js"></script> 
<script src="test2.js"></script> 
</head> 
<body> 
</body> 
</html> 

test1. JS является

$(document).ready(function(){ 

    alert('hello'); 
function check(){ 
    alert('hello i should also appear'); } 
}); 

И test2.js является

$(document).ready(function(){ 

check(); 
    }); 

hello предупреждает, но hello i should also appear не предупреждая, Может кто-нибудь сказать мне, что я делаю неправильно здесь. спасибо в advannce

+0

Его в готовности. Поставьте проверку снаружи готовой. – Blauharley

+0

В дополнение к опубликованным ответам - обратите внимание, что это не связано с несколькими файлами - вы можете иметь весь свой код в одном файле и видеть ту же проблему. –

+0

thankkkkks всем, – beginner

ответ

1

Под test1.js, пожалуйста, напишите вам функцию из документа. функции, которые записаны внутри документа. Не могут быть доступны извне. Таким образом, вы должны переместить его из document.ready

function check(){ 
    alert('hello i should also appear'); 
} 
3

Ваша функция определена внутри анонимного function(){}, поэтому его можно назвать только внутри его объема.

Вы должны исправить и определить функцию вне его:

// now it will be visible everywhere 
var check; 


$(document).ready(function(){ 

    alert('hello'); 
    check = function (param){ 
    alert('hello i should also appear. Param passed is ' + param); } 
    }); 
}); 
0

Вы определили «чек» в затворе, переданный первый вызов document.ready(). Закрытие, переданное второму вызову document.ready(), не имеет доступа к области первого закрытия, и в этом конкретном случае функция «проверка» остается только до тех пор, пока закрытие определено внутри.

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

0

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

0

Изменить test1.js в

$(document).ready(function() { 
    alert('hello'); 
}); 
function check() { 
    alert('hello i should also appear'); 
} 

и быть уверенным, чтобы загрузить test1.js перед загрузкой test2.js.