Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Использование переменной на форуме (https://javascript.ru/forum/misc/35210-ispolzovanie-peremennojj-na-forume.html)

Kiselboom 03.02.2013 17:55

Использование переменной на форуме
 
Здравствуйте! Решил на форуме сделать карту. Понял, что без JS тут не обойтись, стал изучать, параллельно начав писать код.
Необходимо, чтобы объект(имя посетителя) находился на определённой позиции изображения, в зависимости от расположения на форуме.
Для начала, создал сам объект. Положение объекта зависит от переменной {reg_user_row.FORUM_LOCATION}, чтобы JS мог ей использовать создал невидимый <span>. Решил проверить с помощью "document.write", как код воспринимает переменную и сразу же столкнулся с проблемой. Вне зависимости от того, где находится пользователь, код всегда выдает "На главной странице". Подскажите, что не так?
<table id="locate">
   <tr>
    <td class="ribbon">{reg_user_row.USERNAME}</td>
   </tr>
  </table>
<span id="location" hidden>{reg_user_row.FORUM_LOCATION}</span>
<script type="text/javascript">
	loc = document.getElementById('location');
	if (loc = 'В оглавлении форума') {
	 document.write("На главной странице");
	}
        else if (loc = 'Подфорум1') {
	 document.write("Просматривает Подфорум1");
	}
        else {
         document.write("Неизвестно, что и просматривает");
        }
  </script>

Deff 03.02.2013 18:05

Kiselboom,
Нун анализировать текущий адрес страницы
var addres = location.href.replace(/#.*$/,''); //.replace - обрезаем хеш

Kiselboom 03.02.2013 18:15

Почему-то мне кажется, что ошибка в самом коде. Может в операторе дело?
Если убираю hidden, то сама переменная {reg_user_row.FORUM_LOCATION} показывает правильное расположение, к примеру "Подфорум1", а вот document.write всё равно выдаёт "На главной странице".

Deff 03.02.2013 18:21

Цитата:

Сообщение от Kiselboom
Почему-то мне кажется, что ошибка в самом коде.

if (loc == 'В оглавлении форума')

<table id="locate">
   <tr>
    <td class="ribbon">{reg_user_row.USERNAME}</td>
   </tr>
  </table>
<span id="location" hidden>{reg_user_row.FORUM_LOCATION}</span>


<script type="text/javascript">
function tst () {
	loc = document.getElementById('location').innerHTML; alert(loc)
	if (loc == 'В оглавлении форума') {document.write("На главной странице");return;}
	if (loc == 'Подфорум1') {document.write("Просматривает Подфорум1");return;}
	else  {document.write("Неизвестно, что и просматривает");return;}
} tst ()
  </script>

рони 03.02.2013 18:31

Kiselboom,
Deff,
чего - то в супе нехватает
loc = document.getElementById('location');

Kiselboom 03.02.2013 18:31

No. Теперь всегда выдаёт только "Неизвестно, что и просматривает".

Kiselboom 03.02.2013 18:32

рони,
Чего же?

Deff 03.02.2013 18:38

Kiselboom,
Воткнул alert(loc)
рони, CПС - не углядел

Kiselboom 03.02.2013 18:46

Deff,
Ан нет. Теперь c alert(loc) вообще ничего не пишет и окна не появлется...

Deff 03.02.2013 18:48

Kiselboom, Значит что-то не так в PHP {reg_user_row.FORUM_LOCATION}
<table id="locate">
   <tr>
    <td class="ribbon">{reg_user_row.USERNAME}</td>
   </tr>
  </table>
<span id="location" hidden>{reg_user_row.FORUM_LOCATION}</span>


<script type="text/javascript">
function tst () {
	loc = document.getElementById('location').innerHTML; alert(loc)
	if (loc == 'В оглавлении форума') {document.write("На главной странице");return;}
	if (loc == 'Подфорум1') {document.write("Просматривает Подфорум1");return;}
	else  {document.write("Неизвестно, что и просматривает");return;}
} tst ()
  </script>

Kiselboom 03.02.2013 18:55

Deff,
alert заработал, когда поставил точку с запятой. И выдал странную вещь. Сейчас на форуме 2 пользователя. Если убрать hidden, около одного переменная показывает "Форум", у второго пользователя показывает "В оглавлении форума". То есть переменная показывает правильные данные. НО при этом alert(loc) выдаёт 2 окна "Форум" и "Форум"...

Deff 03.02.2013 18:59

Цитата:

Сообщение от Kiselboom
НО при этом alert(loc) выдаёт 2 окна "Форум" и "Форум"...

Занчит у Вас идентичные id для обоих пользователей - для id="location" (показывает всегда первое
используйте id=userId+location

Kiselboom 03.02.2013 19:34

Можно поподробнее, а то я никак не допендрю что мне сейчас делать...

Deff 03.02.2013 20:23

Kiselboom,
Цитата:

Сообщение от Kiselboom
Сейчас на форуме 2 пользователя. Если убрать hidden, около одного переменная показывает "Форум", у второго пользователя показывает "В оглавлении форума". То есть переменная показывает правильные данные. НО при этом alert(loc) выдаёт 2 окна "Форум" и "Форум"...

Выложите код в топик для двойного Варианта

Kiselboom 03.02.2013 20:36

Цитата:

Сообщение от Deff (Сообщение 231316)
Выложите код в топик для двойного Варианта

Извините, но я не понял, что вы имеет ввиду под двойным Вариантом.

Deff 03.02.2013 20:38

Цитата:

Сейчас на форуме 2 пользователя.
Цитата:

при этом alert(loc) выдаёт 2 окна
При текущем коде(в примере) на каждой новой странице лишь один алерт, так что думаю код изменен

Deff 03.02.2013 20:46

Цитата:

Сообщение от Deff
пользователя показывает "В оглавлении форума". То есть переменная показывает правильные данные. НО при этом alert(loc) выдаёт 2 окна "Форум" и "Форум"...

Значения берутся из <span id="location" hidden>{reg_user_row.FORUM_LOCATION}</span>
Возможно неверное их заполнение, - проще дать ссылку на тест страницу
И обычно, можно тестить местонахождение просто по адресу текущей ссылки или почему не выдавать PHP - cразу итоговое для alert ?(тогда и тестить скриптом не надо

Kiselboom 03.02.2013 20:52

Цитата:

можно тестить местонахождение просто по адресу текущей ссылки
То есть без использования переменной форума? Это как так?

Deff 03.02.2013 21:09

Kiselboom,
Приведите концовки ссылок для главной и форум

Kiselboom 03.02.2013 21:18

Deff,
"В оглавлении форума" - нет окончания
"Форум" - /viewonline (на этой странице находится сам код)
Подфорум1 - /f3-forum

Deff 03.02.2013 21:48

<script type="text/javascript">
function tst () {
	loc = location.href.replace(eval("/^.*"+location.hostname+"/i"),'').replace(/#.*$/,'').split('/');//
	loc = loc[loc.length-1];alert(loc)
	if (loc=='') {document.write("На главной странице");return;}
	if (loc.indexOf('-forum')!=-1) {document.write("Просматривает Подфорум1");return;}
	else  {document.write("Неизвестно, что и просматривает");return;}
} tst ()
  </script>

Kiselboom 03.02.2013 21:59

Deff,
Спасибо за труд, а как мне это привязать к моему коду?

Deff 03.02.2013 22:07

Цитата:

Сообщение от Kiselboom
а как мне это привязать к моему коду?

}Хм - просто заменить предыдущий скрипт

Kiselboom 03.02.2013 22:13

Нет, такая фишка не прокатывает... Код не пишет вообще ничего...
Можно спросить, каким образом ваш код должен узнавать, на какой странице находится тот или иной пользователь?

Deff 03.02.2013 22:19

Kiselboom,
Наверно плохо пояснили - что и как действет код на текущей странице ?
"Форум" - /viewonline ставите фреймом ?
Приведенный код в посте 21 ставится на текущую страницу

Kiselboom 03.02.2013 22:25

Deff,
Извините. но видимо я ещё совсем нуб, и не понимаю, что вы от меня хотите сейчас узнать... Пожалуй стоит самому ещё поразбираться.
Спасибо за помощь!

Deff 03.02.2013 22:28

Kiselboom,
*Поправил код

Kiselboom 03.02.2013 22:33

Нет. По прежнему ничего. Даже окно не выскакивает.

Deff 03.02.2013 22:36

Kiselboom,
:) ясно - у Вас код стоит /viewonline стоит отдельной страницей - занчит мои предложения пост 21 - можно в урну

Kiselboom 03.02.2013 22:45

Deff,
Кстати, подумал так, что с помощью switch поудобнее будет...
Значит будем разбираться, как сделать разные id для {reg_user_row.FORUM_LOCATION}...
Хм... А если сделать несколько <span id="location" hidden>{reg_user_row.FORUM_LOCATION}</span> с разными id, и к каждому свой скрипт, прокатит, как думаете?

Kiselboom 03.02.2013 22:47

Хотя, вряд ли, будет всё равно каждое выдавать результаты для первого юзера в списке, то есть для админа....

Deff 03.02.2013 22:49

Kiselboom,
Нужен полнвй код страницы для несколькуих юзеров
Желательно глянуть на Инет - макет

Deff 03.02.2013 22:49

Kiselboom,
Нужен полный код страницы для нескольких юзеров
Желательно глянуть на Инет - макет

Kiselboom 03.02.2013 22:56

Всё, что я вам дал, это и есть полный код страницы) Ну, не считая хидера. На самом деле я на форуме просто пытаюсь передалать под свои нужды страницу форума "Кто сейчас онлайн". Если что, вот она:
<table width="100%" border="0" cellspacing="2" cellpadding="0" align="center">
	<!-- BEGIN googlemap -->
	<tr>
		<td><br />
		<iframe frameborder="0" scrolling="no" width="100%" height="450" src="{googlemap.U_GOOGLEMAP}"></iframe><br />
		<br />
		</td>
	</tr>
	<!-- END googlemap -->
	<tr>
		<td><span class="nav"><a class="nav" href="{U_INDEX}">{L_INDEX}</a></span></td>
	</tr>
</table>
<table class="forumline" width="100%" border="0" cellspacing="1" cellpadding="4">
	<tr>
		<th class="thCornerL" width="35%" height="25">{L_USERNAME}</th>
		<th class="thTop" width="25%">{L_LAST_UPDATE}</th>
		<th class="thCornerR" width="40%">{L_FORUM_LOCATION}</th>
	</tr>
	<tr>
		<td class="catSides" colspan="3" height="28"><span class="cattitle"><b>{TOTAL_REGISTERED_USERS_ONLINE}</b></span></td>
	</tr>
	<!-- BEGIN reg_user_row -->
	<tr>
		<td class="{reg_user_row.ROW_CLASS}" width="35%"><span class="gen"><a class="gen" href="{reg_user_row.U_USER_PROFILE}">{reg_user_row.USERNAME}</a></span></td>
		<td class="{reg_user_row.ROW_CLASS}" align="center" nowrap="nowrap" width="25%"><span class="gen">{reg_user_row.LASTUPDATE}</span></td>
		<td class="{reg_user_row.ROW_CLASS}" width="40%"><span class="gen"><a class="gen" href="{reg_user_row.U_FORUM_LOCATION}">{reg_user_row.FORUM_LOCATION}</a></span></td>
	</tr>
	<!-- END reg_user_row -->
	<tr>
		<td class="row3" colspan="3" height="1"><img src="http://illiweb.com/fa/empty.gif" alt="." height="1" width="1"></td>
	</tr>
	<tr>
		<td class="catSides" colspan="3" height="28"><span class="cattitle"><b>{TOTAL_GUEST_USERS_ONLINE}</b></span></td>
	</tr>
	<!-- BEGIN bot_user_row -->
	<tr>
		<td class="{bot_user_row.ROW_CLASS}" width="35%"><span class="gen">{bot_user_row.USERNAME}</span></td>
		<td class="{bot_user_row.ROW_CLASS}" align="center" nowrap="nowrap" width="25%"><span class="gen">{bot_user_row.LASTUPDATE}</span></td>
		<td class="{bot_user_row.ROW_CLASS}" width="40%"><span class="gen"><a class="gen" href="{bot_user_row.U_FORUM_LOCATION}">{bot_user_row.FORUM_LOCATION}</a></span></td>
	</tr>
	<!-- END bot_user_row -->
	<!-- BEGIN guest_user_row -->
	<tr>
		<td class="{guest_user_row.ROW_CLASS}" width="35%"><span class="gen">{guest_user_row.USERNAME}</span></td>
		<td class="{guest_user_row.ROW_CLASS}" align="center" nowrap="nowrap" width="25%"><span class="gen">{guest_user_row.LASTUPDATE}</span></td>
		<td class="{guest_user_row.ROW_CLASS}" width="40%"><span class="gen"><a class="gen" href="{guest_user_row.U_FORUM_LOCATION}">{guest_user_row.FORUM_LOCATION}</a></span></td>
	</tr>
	<!-- END guest_user_row -->
</table>
<table width="100%" border="0" cellspacing="2" cellpadding="0" align="center">
	<tr>
		<td align="left" valign="top"><span class="gensmall">{L_ONLINE_EXPLAIN}</span></td>
		<td align="right" valign="top"><span class="gensmall">{S_TIMEZONE}</span></td>
	</tr>
</table>
<br />
<table width="100%" border="0" cellspacing="2" align="center">
	<tr>
		<td align="right" valign="top">{JUMPBOX}</td>
	</tr>
</table>

Kiselboom 03.02.2013 22:58

Цитата:

Сообщение от Deff
для нескольких юзеров

Что вы под этим имете ввиду? Код сам по себе очень просто, переменная сама для каждого юзера создаёт нужный мне объект.

Deff 03.02.2013 23:03

Kiselboom,
:) Почему не создать ячейку нахождения юзера в данный момент тоже PHP ?

Пример => http://forum.mybb.ru/online.php

Kiselboom 03.02.2013 23:07

Deff,
Пример, который вы мне скинули, именно так и выглядит страница, после на писания кода из поста 34, это стандартный шаблон форума, его я и переделываю)))
Прикол в том, что мне нужно использовать это значение нахождения, что потом в зависимости от него происходили определённые действия)

Deff 03.02.2013 23:25

Цитата:

Сообщение от Kiselboom
Прикол в том, что мне нужно использовать это значение нахождения, что потом в зависимости от него происходили определённые действия)

Поясните что нужно сделать на странице - я сделаю со страницей из моего примера (Желателен скриншот с пояснениями

Kiselboom 03.02.2013 23:33

Вообще цель моих действий такова. Изображение в виде карты. На карте различные комнаты, здания, локации - что угодно. Вот это объект:
<table id="locate">
   <tr>
    <td class="ribbon">{reg_user_row.USERNAME}</td>
   </tr>
  </table>

Состоит из картинки(прописана в CSS) и текст(как видно, имени пользователя). Он перемещается в пределе определённой области, а вот какой области, как раз и зависит от {reg_user_row.FORUM_LOCATION}.
То есть, если юзер находится на главной странице, на карте его ник находится, к примеру в углу, если другой юзер находится в "подфорум1", его ник на карте - другом углу и т.д.

Kiselboom 03.02.2013 23:35

P.S. Примерно как вот здесь: http://unohog.ru/maps.php


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