У меня есть 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; });