За последние 24 часа нас посетили 19096 программистов и 1637 роботов. Сейчас ищут 872 программиста ...

Смена дива

Тема в разделе "JavaScript и AJAX", создана пользователем xkant, 28 апр 2013.

  1. xkant

    xkant Новичок

    С нами с:
    21 апр 2013
    Сообщения:
    25
    Симпатии:
    0
    Есть два линка

    1. English
    2. Russian

    А также два текстовых поля(diva)

    [​IMG]

    Т. е. скажем, текстовые дивы имеют position: absolute, для размещения одного над другим.

    Вначале, отображается только верхний div(английский текст), а при нажатии на линк Russian - английский div перестает отображаться, а вместо него начинает отображаться русский div. И наоборот.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    есть две чашки: в одной чашке кофе, в другой чай.

    Добавлено спустя 44 секунды:
    это я к тому, что у вас нет ни одного вопросительного знака в вашем посте.
     
  3. xkant

    xkant Новичок

    С нами с:
    21 апр 2013
    Сообщения:
    25
    Симпатии:
    0
    В идеале, интересует реализация. ))
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    в идеале менять содержимое дива, а не видимость одного из двух. но можно и так.
    $('#divid1').hide();
    $('#divid2').show();
     
  5. xkant

    xkant Новичок

    С нами с:
    21 апр 2013
    Сообщения:
    25
    Симпатии:
    0
    Спасибо за ответ, но не могли бы Вы описать подробнее, и без jquery
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    нет, я ленивый =)

    а в чем вопросы остались? вы не хотите сделать это сами и хотите чтобы я вам дал готовое решение? ну это не сложно. просто я ленивый.
     
  7. xkant

    xkant Новичок

    С нами с:
    21 апр 2013
    Сообщения:
    25
    Симпатии:
    0
    Про лень можно даже не писать, сейчас все такие ).
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    вам надо добавить диву css display: none; или добавить класс с таким css

    но лучше подменять содержимое. аяксом.
     
  9. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Показывайте html код.
     
  10. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
  11. xkant

    xkant Новичок

    С нами с:
    21 апр 2013
    Сообщения:
    25
    Симпатии:
    0
    Вот код страницы, ...
    Код (Text):
    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    2.     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    3.     <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
    4. <head>
    5.     <link rel="stylesheet" href="print.css" type="text/css" media="print" />
    6.     <title>Page</title>
    7.     <style type="text/css" media="screen" id="test">
    8.         #english {cursor: pointer;}
    9.         #russian {cursor: pointer;}
    10.         #redbox {width: 300px; height: 200px; background-color: red; display: block;}
    11.         #bluebox {width: 300px; height: 200px; background-color: blue; display: block;}
    12.     </style>
    13.     <!--
    14.     <script type="text/javascript">
    15.         function changeText(redbox) {
    16.             if(document.getElementById('redbox').style.display="block";)
    17.             document.getElementById('redbox').style.display="none";
    18.         }
    19.     </script>
    20.     -->
    21. </head>
    22. <body>
    23.     <div id="english" onclick="document.getElementById('redbox').style.display='none';">english</div>
    24.     <div id="russian" onclick="document.getElementById('bluebox').style.display='none';">russian</div>
    25.     <div id="redbox"></div>
    26.     <div id="bluebox"></div>
    27. </body>
     
  12. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    От фанаря написал:

    Код (PHP):
    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title>Page</title>
    6. <style type="text/css">
    7.     #english, #russian{cursor:pointer;}
    8.     #russian{display:none;}
    9.     #redbox, #bluebox{width:300px;height:200px;}
    10.     #redbox{background:#ff0000;}
    11.     #bluebox{background:#0000ff;display:none;}
    12. </style>
    13. <script type="text/javascript">
    14.     var arrayClick=[];
    15.     arrayClick['english']='redbox';
    16.     arrayClick['russian']='bluebox';
    17.     function clicked(_this) {
    18.         document.getElementById(_this.id).onclick=function() {
    19.             for(var i in arrayClick) {
    20.                 if(i===this.id) {
    21.                     this.style.display='none';
    22.                     document.getElementById(arrayClick[this.id]).style.display='none';
    23.                 } else {
    24.                     document.getElementById(i).style.display='block';
    25.                     document.getElementById(arrayClick[i]).style.display='block';
    26.                 }
    27.             }
    28.         };
    29.     }
    30. </script>
    31. </head>
    32. <body>
    33.    <div id="english" onclick="clicked(this)">english</div>
    34.    <div id="russian" onclick="clicked(this)">russian</div>
    35.    <div id="redbox">English</div>
    36.    <div id="bluebox">Russian</div>
    37. </body>
    38. </html>
     
  13. xkant

    xkant Новичок

    С нами с:
    21 апр 2013
    Сообщения:
    25
    Симпатии:
    0
    Спасибо Your, а если мне надо чтобы линки не чередовались, а были видны оба сразу. Как можно сделать?

    Сейчас так
    [​IMG]

    А надо так
    [​IMG]
     
  14. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Да это вообще никакие не линки =) А дивы.
    Вам нужно, чтобы только менялась часть ниже?

    P.S. я все сделал в кучу, чтобы все менялось!
     
  15. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    он продолжает называть вещи СВОИМИ именами))) у него были линки, решение на дивах, а вопрос в том как сделать чтоб обе ШТУКИ были видны =)
     
  16. xkant

    xkant Новичок

    С нами с:
    21 апр 2013
    Сообщения:
    25
    Симпатии:
    0
    Да, чтобы менялась только нижняя часть(красно синяя).
    (т.е. 'языковое меню' не менялось, видно оба дива)

    [​IMG]
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну не прячь ссылки тогда.

    Код (Text):
    1. <script type="text/javascript">
    2.     var arrayClick=[];
    3.     arrayClick['english']='redbox';
    4.     arrayClick['russian']='bluebox';
    5.     function clicked(_this) {
    6.         document.getElementById(_this.id).onclick=function() {
    7.             for(var i in arrayClick) {
    8.                  if(i===this.id) {
    9.                     //this.style.display='none';
    10.                     document.getElementById(arrayClick[this.id]).style.display='none';
    11.                 } else {
    12.                     //document.getElementById(i).style.display='block';
    13.                     document.getElementById(arrayClick[i]).style.display='block';
    14.                 }
    15.             }
    16.         };
    17.     }
    18. </script>
     
  18. xkant

    xkant Новичок

    С нами с:
    21 апр 2013
    Сообщения:
    25
    Симпатии:
    0


    Так опять же видно только один див(язык)

    Кстати, почему в этом коде (который без закомментированных строк)
    При первом клике на див ничего не просиходит, срабатывает только при втором и последующих.
    т.е. если нажать на див(english-меню) срабатывает только на второй раз,
    потом его заменяет див(russian-меню) и он тоже срабатывает только на второй раз, дальше нормально
     
  19. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Упс! Простите!
    Это потому, что я сначала делал через document.getElementById('ид').onclick а потом это скопирывал и вставил в функцию забыв, о том, что это уже новый объект для вызова по событию onclick у элемента div.

    Вот так надо видимо:
    Код (PHP):
    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title>Page</title>
    6. <style type="text/css">
    7.     #container{height:30px;}
    8.     #container #english, #container #russian{cursor:pointer;float:left;margin:0 20px 0 0;}
    9.     #redbox, #bluebox{width:300px;height:200px;}
    10.     #redbox{background:#ff0000;}
    11.     #bluebox{background:#0000ff;display:none;}
    12. </style>
    13. <script type="text/javascript">
    14.     var arrayClick=[];
    15.     arrayClick['english']='redbox';
    16.     arrayClick['russian']='bluebox';
    17.     function type(variable,type) {
    18.         if('undefined'===typeof type) {
    19.             return 'undefined'!==typeof variable;
    20.         } else {
    21.             return type===typeof variable;
    22.         }
    23.     }
    24.     function clicked(self) {
    25.         if(type(self) && type(self,'object')) {
    26.             for(var i in arrayClick) {
    27.                 if(i===self.id) {
    28.                     document.getElementById(arrayClick[self.id]).style.display='none';
    29.                 } else {
    30.                     document.getElementById(arrayClick[i]).style.display='block';
    31.                 }
    32.             }
    33.         }
    34.     }
    35. </script>
    36. </head>
    37. <body>
    38. <div id="container">
    39.     <div id="english" onclick="clicked(this)">
    40.         english
    41.     </div>
    42.     <div id="russian" onclick="clicked(this)">
    43.         russian
    44.     </div>
    45. </div>
    46. <div id="redbox">English</div>
    47. <div id="bluebox">Russian</div>
    48. </body>
    49. </html>
    ?
     
  20. xkant

    xkant Новичок

    С нами с:
    21 апр 2013
    Сообщения:
    25
    Симпатии:
    0
    Вот, спасибо Your.
    Теперь бы решить вопрос с active выделением в меню... )))
    (т. е. активный div-меню - underline или color)
     
  21. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ох уж эти халявщики...
     
  22. xkant

    xkant Новичок

    С нами с:
    21 апр 2013
    Сообщения:
    25
    Симпатии:
    0
  23. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Добавляйте класс элементу и он будет у вас какой угодно.
    Какой стиль укажете тот и будет.
     
  24. xkant

    xkant Новичок

    С нами с:
    21 апр 2013
    Сообщения:
    25
    Симпатии:
    0
    Что-то я не понял, это же active, а не hover ...
    Сейчас же отображаются сразу оба пункта меню(div-a)
    Он же должен зависеть от div-a(redbox, bluebox) и в зависимости от того какой пункт меню активный - отображается либо redbox, либо bluebox
    ?
     
  25. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    по нажатию на див с названием языка происходит смена дивов с данными? да. вот теперь прикиньте стиль и чуток перепишите код чтоб и дивы языков меняли свой вид