Случай, когда «document.ready» препятствует

У меня есть php-файл, в этом файле у меня есть этот код:

<script language="JavaScript" type="text/javascript" src="jquery.js"></script> <script language="JavaScript"> $(document).ready( function () { var myvar = <?php echo json_encode($myvar); ?> ; }); </script> <script language="JavaScript" type="text/javascript" src="costum.js"> </script> 

и в файле costum.js у меня есть код:

 $(document).ready( function () { alert(myvar ); }); 

это не работает, ошибка consol возвращает «myvar undefined»

если в php-файле я пишу это (то есть без «document.ready»)

  <script language="JavaScript"> var myvar = <?php echo json_encode($myvar); ?> ; </script> 

в файле costum.js работает код alredy. Пожалуйста, расскажите, почему это произошло?

попробуйте

 <script> var myvar; $(document).ready( function () { myvar = <?php echo json_encode($myvar); ?> ; }); </script> 

ваша переменная должна быть объявлена ​​глобальной (или, другими словами, во внешней области), для просмотра как из функций document.ready .

Поскольку атрибут language боковой заметки не требуется. Даже type не нужен (если вы используете html5 doctype)

Ваш myvar находится в локальной области готовой функции. Переместите объявление var за пределами, чтобы сделать его глобальным и доступным для другого скрипта.

Однако, поскольку вы просто назначаете переменную, вам не придется ждать DOMready в любом случае. Просто используйте

 <script type="text/javascript"> var myvar = <?php echo json_encode($myvar); ?>; </script> 

BTW, атрибут language устарел .

локальная переменная внутри функции видна только в области функций.

когда вы объявляете переменную в глобальной области, то это глобальная переменная.

Вы можете открыть его в глобальном масштабе:

 $(document).ready( function () { var myvar = <?php echo json_encode($myvar); ?>; window['myvar'] = myvar; });