Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.12.2008, 11:20
Новичок на форуме
Отправить личное сообщение для Евгений Посмотреть профиль Найти все сообщения от Евгений
 
Регистрация: 17.12.2008
Сообщений: 3

Я в тупике .show .hide (Как сделать многоязычный сайт)
<head>
<style>
      .show {
          display: block;
          visibility: visible;
               }

      .hide {
          display: none;
          visibility: hidden;
              }
</style>

 <script>
              function switchLang(lng)
              {
                      var lngHide = (lng == 'ru') ? 'en' : 'ru';
                      document.getElementById(lng).className = 'show';
                      document.getElementById(lngHide).className = 'hide';
              }
</script>
</head>

<body>

   <p>
          <a href="javascript:switchLang('en')">  En  </a> 
          <a href="javascript:switchLang('ru')">   Ru  </a>
   </p>


<= Этот класс работает
<div id="en" class="hide">English text</div>       
                                                                       
      <div id="ru" class="show">Russian text</div>


<= следующий не работает
<div id="en" class="hide">новый English text</div>
                                                                  
      <div id="ru" class="show">новый Russian text</div>

<body>

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

Ответить с цитированием
  #2 (permalink)  
Старый 17.12.2008, 11:23
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Вот чисто логически, что должен вернуть document.getElementById('ru'), если элементов с id='ru' на странице несколько?
Ответить с цитированием
  #3 (permalink)  
Старый 17.12.2008, 11:27
Новичок на форуме
Отправить личное сообщение для Евгений Посмотреть профиль Найти все сообщения от Евгений
 
Регистрация: 17.12.2008
Сообщений: 3

false? Подскажите как сделать?
Ответить с цитированием
  #4 (permalink)  
Старый 17.12.2008, 11:41
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

расшифровываю getElementById:
get - получить
Element - элемент (не элементЫ, а элеменТ!!!)
ById - по его айди.

Соответственно, вы получите элемент (один). А раз у вас несколько элементов с одинаковым айди, какой из них вы получите? Скорее всего первый, так как одинаковые id запрещены!

Что делать:
во-первых, не мучать пользователя и НЕ ГРУЗИТЬ ДВЕ ВЕРСИИ (3, 4 .. n версий) одного и того же контента!!!
во-вторых, сделать разные странички для разных языков и просто переключаться между ними... Ну а выбор языка можно запоминать в куку, чтобы при следующем заходе грузить страницу с необходимым языком...
Ответить с цитированием
  #5 (permalink)  
Старый 17.12.2008, 11:46
Новичок на форуме
Отправить личное сообщение для Евгений Посмотреть профиль Найти все сообщения от Евгений
 
Регистрация: 17.12.2008
Сообщений: 3

понятно, просто страничка одна контента мало. Ладно сделаем по старинке. Всё равно спасибо.
Ответить с цитированием
  #6 (permalink)  
Старый 17.12.2008, 12:17
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

Сегодня страничка одна, завтра добавиться вторая, потом контента прибавится... И так дале... получится свалка... Не надо наплевательски относиться к проектированию странички даже если она маленькая.
Ответить с цитированием
  #7 (permalink)  
Старый 18.12.2008, 11:31
kvl kvl вне форума
Интересующийся
Отправить личное сообщение для kvl Посмотреть профиль Найти все сообщения от kvl
 
Регистрация: 16.12.2008
Сообщений: 16

В библиотеках (я юзаю напр. prototype) есть функции типа "getElementsByClassName", можно присвоить всем нужным элементам один класс, отобрать их, а в функции switchLang(lng) менять не className, а только небходимые стилевые опции display, visible. Без библиотеки - можно несложным скриптом отобрать все нужные id по какому-нибудь признаку или списку.
В prototype ваще можно отбирать элементы по любому допустимому css-селектору - для этого имеется функция $$().
Ответить с цитированием
  #8 (permalink)  
Старый 18.12.2008, 12:25
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

kvl,
Это все делается намного проще.
Данную задачу на js, конечно, выполнять не следует, но подход объяснить на ней можно.

Всем элементам, в которых содержится контент на определенном языке дать два класса: lang и имя языка (ru, en, ...).
<div class="lang ru">Привет, мир!</div>
<div class="lang en">Hello, World!</div>


Пишем стили:
Код:
.lang {
  display: none;
}
body.ru .ru {
  display: block;
}
body.en .en {
  display: block;
}
Теперь при переключении языка просто меняем класс у body на название языка.

Последний раз редактировалось Kolyaj, 18.12.2008 в 12:29.
Ответить с цитированием
  #9 (permalink)  
Старый 18.12.2008, 12:57
kvl kvl вне форума
Интересующийся
Отправить личное сообщение для kvl Посмотреть профиль Найти все сообщения от kvl
 
Регистрация: 16.12.2008
Сообщений: 16

А менять класс у body ты тоже без js изловчишься?
Ответить с цитированием
  #10 (permalink)  
Старый 18.12.2008, 13:28
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

А я где-то сказал, что без js?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать локальную переменную глобальной?? Дмитрий Общие вопросы Javascript 8 02.11.2010 03:33
Как сделать справочное окно? Vlaimir Events/DOM/Window 13 05.01.2009 14:06
Как сделать такую галерею crisco Events/DOM/Window 4 23.12.2008 16:28
Скроллбар, как сделать свой? Destrifer Элементы интерфейса 2 01.12.2008 23:48
как сделать гиперсылку на объект javascript??? kos_walker Общие вопросы Javascript 3 30.09.2008 06:58