Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Помогите разобратся, изминение переменной (https://javascript.ru/forum/dom-window/57389-pomogite-razobratsya-izminenie-peremennojj.html)

scorpion95 01.08.2015 23:30

Помогите разобратся, изминение переменной
 
Я только начал изучать JS, до этого с PHP дело имел.
Наклепал незамысловатый кодец который должен бы работать, но не работает. Посмотрите что не так, пожалуйста.

<html>
<head>
<title>
iNetNation - виртуальное интернет государство
</title>
<link href="../css/main.css" rel="stylesheet" type="text/css">
<script src="javascript/main.js"></script>
</head>
<body>
<?include 'includes/header.php'?>
<?include 'includes/sidebar.php'?>
<div class="content" name="content">
<script>document.write(a);</script>
</div>
<?include 'includes/footer.php'?>
</body>
</html>


// это файл где кнопка находится
<div class="sidebar">
<div class="menu">
<input class="menu_button" type="submit" name="main" onclick="main()" value="Главная">
<input class="menu_button" type="submit" name="map" value="Карта">
<input class="menu_button" type="submit" name="registration" value="Регистрация">
<input class="menu_button" type="submit" name="input" value="Вход">
</div>
</div>


var a = 'asd';
function main(){
	a = 'FFF';
}


Проблема в том, что при нажатии на кнопку с именем main, новое значение переменной a не выводится в <script>document.write(a);</script>, то есть оно остается неизменным.
Как код изменить чтоб работало?

scorpion95 02.08.2015 10:36

Хелп плиз.

Deff 02.08.2015 10:50

scorpion95,
1. document.write(a) нельзя использовать произвольно, по событию, когда страница уже загружена, т.е вывод через document.write - однократен
Можно попробовать так
<div id="div_write" class="content" name="content">
<script>var a = 'asd';
function main(){
   a = 'FFF';
   document.getElementById('div_write').innerHTML = a;
}
document.write(a);
</script>
</div>

Или оставить саму функцию, где и раньше, добавив ID элементу и строку cиним
var a = 'asd';
function main(){
a = 'FFF';
document.getElementById('div_write').innerHTML = a;
}

scorpion95 02.08.2015 10:51

Цитата:

Сообщение от Deff (Сообщение 382416)
scorpion95,
1. document.write(a) нельзя использовать произвольно, по событию, когда страница уже загружена, т.е вывод через document.write - однократен
Можно попробовать так
<div id="div_write" class="content" name="content">
<script>var a = 'asd';
function main(){
   a = 'FFF';
   document.getElementById('div_write').innerHTML = a;
}
document.write(a);
</script>
</div>

Про innerHTML я знаю, но это мне не подходит, ибо PHP скрипт так не загрузишь, а мне надо сделать include PHP-скрипта по нажатию кнопки.

Deff 02.08.2015 10:57

scorpion95,
http://javascript.ru/tutorial/dom
Что Вы конкретно хотите вставить на страницу, через скрипт ? - нарисуйте примерный кусок

scorpion95 02.08.2015 11:41

Цитата:

Сообщение от Deff (Сообщение 382418)
scorpion95,
http://javascript.ru/tutorial/dom
Что Вы конкретно хотите вставить на страницу, через скрипт ? - нарисуйте примерный кусок

function main(){
    a = '<?include 'pages/main.php'?>';
}

Ну вот что-то типо этого я хочу передавать в значение блока content на странице.

Deff 02.08.2015 11:57

scorpion95,
Вы контент страницы покажите ?
Если там нет тегов <html> и скриптов, то в принципе достаточно и .innerHTML
<!DOCTYPE>
<html>
<head>
</head>
<body>
<div id="div_write" class="content" name="content">вапвапвап</div>
<script>
   var a = '<input type="file"/><b>Привет!</b>';
   document.getElementById('div_write').innerHTML  = a;

</script>
</body>
</html>

scorpion95 02.08.2015 12:04

Цитата:

Сообщение от Deff (Сообщение 382426)
scorpion95,
Вы контент страницы покажите ?
Если там нет тегов <html> и скриптов, то в принципе достаточно и .innerHTML
<!DOCTYPE>
<html>
<head>
</head>
<body>
<div id="div_write" class="content" name="content">вапвапвап</div>
<script>
   var a = '<input type="file"/><b>Привет!</b>';
   document.getElementById('div_write').innerHTML  = a;

</script>
</body>
</html>

В том-то и дело, что там есть php-скрипт. Я хочу чтоб при нажатии кнопок меню у меня в контент загружалась страница регистрации, страница авторизации и т.д. (через инклюд соответствующей php страницы), а innerHTML не запускает PHP код.

Deff 02.08.2015 12:14

scorpion95,
Хм Вам нужно перегрузить страницу по иному адресу или подгрузить свой контент в <div> ? Поскольку и document.write(a); не позволит вам Подгрузить целиком страницу, тут либо скриптом вызывать переход по новому адресу на вкладке, по нажаию кнопки смена и загрузка новостраницы, либо аяксом подгружать контент на страницу

scorpion95 02.08.2015 12:18

Цитата:

Сообщение от Deff (Сообщение 382429)
scorpion95,
Хм Вам нужно перегрузить страницу по иному адресу или подгрузить свой контент в <div> ? Поскольку и document.write(a); не позволит вам Подгрузить целиком страницу, тут либо скриптом вызывать переход по новому адресу на вкладке, по нажаию кнопки смена и загрузка новостраницы, либо аяксом подгружать контент на страницу

Нужно без перегрузки, подрузить свой контент в div.
А на Аяксе как это примерно выглядеть будет?

П.С. мне пришлось изучать JS только из-за того, что PHP не может обращаться к id элемента, как-то туго этот язык идет.


Часовой пояс GMT +3, время: 12:54.