Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > почему событие срабатывает один раз


Автор: supervladislav 29.11.2012, 15:48
Такая задача: нужно менять текст по нажатию клавиш кнопок  влево или вправо    http://vestasoft.ru/.




Иногда слой слайдшоу 2 показывается два раза ,почему не понятно.   




Д


Код

  <script type="text/javascript">
      function leftshow(){
          
          if(document.getElementById('slideshow1').style.display='block'){
              document.getElementById('slideshow1').style.display='none';
               document.getElementById('slideshow2').style.display='block';}
             else if(document.getElementById('slideshow2').style.display='block'){
                 document.getElementById('slideshow2').style.display='none';
               document.getElementById('slideshow3').style.display='block';
            } else if(document.getElementById('slideshow3').style.display='block'){
                document.getElementById('slideshow3').style.display='none';
                document.getElementById('slideshow4').style.display='block'
            }else if(document.getElementById('slideshow4').style.display='block') {
                document.getElementById('slideshow4').style.display='none';
                 document.getElementById('slideshow1').style.display='block';
            }} 
      
      function rightshow(){
          if(document.getElementById('slideshow4').style.display='block'){
              document.getElementById('slideshow1').style.display='none';
               document.getElementById('slideshow3').style.display='block';}
             else if(document.getElementById('slideshow3').style.display='block'){
                 document.getElementById('slideshow3').style.display='none';
               document.getElementById('slideshow2').style.display='block';
            } else if(document.getElementById('slideshow2').style.display='block'){
                document.getElementById('slideshow2').style.display='none';
                document.getElementById('slideshow4').style.display='block'
            }else if(document.getElementById('slideshow1').style.display='block') {
                document.getElementById('slideshow1').style.display='none';
                 document.getElementById('slideshow4').style.display='block';
            }
          
      }
       
       
   </script>



Код

<div id="uk_left" onclick="leftshow();" ondblclick="leftshow();"></div>
                      <div id="uk_right" onclick="rightshow();" ondblclick="leftshow();"></div>
                      <div id="slideshow2">
                      <p id="one">Начать работу можно за минуты. Новые учетные записи пользователей создаются за секунды.</p>    
                          
                      </div>
                      <div id="slideshow3"> <p id="one">Начать работу можно за минуты. Новые учетные записи пользователей создаются за секунды.</p>  </div>
                      <div id="slideshow4"><p id="one">Вас защитит встроенная технология борьбы с вирусами и нежелательной почтой</p></div>
                      
                      <div id="slideshow1">
</div>
 
Второй раз событие почему-то несрабатывает

Автор: skyboy 29.11.2012, 15:58
Код

if(document.getElementById('slideshow2').style.display='block'){
                 document.getElementById('slideshow2').style.display='none';

сначала присваиваешь 'block', а потом сразу же — 'none'
и так везде.
P.S. мне кажется, ты глумишься. сложно поверить, что такой код пишет человек, который только на форуме зареген 6 лет назад, а уж сколько программированием занимается — вообще фиг знает.

Автор: supervladislav 29.11.2012, 16:10
skyboy,я таким образом проверяю какой блок отображается в текущий момент отображаться то  должен только один блок.

Добавлено через 9 минут и 20 секунд
Я делаю так: смотрим какой из блоков блок потом отключаем его в ноне.
И так строим цепочку от первого до последнего ,а кнопке которая отвечает за райт тоже самое но наоборот.

Автор: Arantir 29.11.2012, 16:23
"=" != "=="

Автор: supervladislav 29.11.2012, 17:03
[Б]Арантир[/Б], вы думаите что лучше отталкиваться от нет чем от да?
Почему выплывают сразу два слоя я никак понять не могу?
когда выполняется функция райтшоу появляются два слоя 
слайдшоу 3 и 4 я
 никак понять не могу почему вот отредактированный код 

Код

<script type="text/javascript">
      function leftshow(){
          
          if(document.getElementById('slideshow1').style.display='block'){
              document.getElementById('slideshow1').style.display='none';
               document.getElementById('slideshow2').style.display='block';}
             else if(document.getElementById('slideshow2').style.display='block'){
                 document.getElementById('slideshow3').style.display='none';
               document.getElementById('slideshow2').style.display='block';
            } else if(document.getElementById('slideshow3').style.display='block'){
                document.getElementById('slideshow3').style.display='none';
                document.getElementById('slideshow4').style.display='block'
            }else if(document.getElementById('slideshow4').style.display='block') {
                document.getElementById('slideshow4').style.display='none';
                 document.getElementById('slideshow1').style.display='block';
            }} 
      
      function rightshow(){
          if(document.getElementById('slideshow4').style.display='block'){
              document.getElementById('slideshow1').style.display='none';
               document.getElementById('slideshow3').style.display='block';}
             else if(document.getElementById('slideshow3').style.display='block'){
                 document.getElementById('slideshow3').style.display='none';
               document.getElementById('slideshow2').style.display='block';
            } else if(document.getElementById('slideshow2').style.display='block'){
                document.getElementById('slideshow2').style.display='none';
                document.getElementById('slideshow4').style.display='block'
            }else if(document.getElementById('slideshow1').style.display='block') {
                document.getElementById('slideshow1').style.display='none';
                 document.getElementById('slideshow4').style.display='block';
            }
          
      }
       
       
   </script>
  


Автор: skyboy 29.11.2012, 17:13
Цитата(supervladislav @  29.11.2012,  16:03 Найти цитируемый пост)
[Б]Арантир[/Б], вы думаите что лучше отталкиваться от нет чем от да?

он говорит прямым текстом, что сравнение(==) и присваивание(=) — радикально разные операции

Автор: supervladislav 29.11.2012, 21:38
[Б]скыбоы[/Б], ой спасибо 

Автор: supervladislav 29.11.2012, 22:32

Код

<script type="text/javascript">
       
      function leftshow(){
          
          if(document.getElementById('slideshow1').style.display=='block'){
              document.getElementById('slideshow1').style.display='none';
               document.getElementById('slideshow2').style.display='block';}
             else if(document.getElementById('slideshow2').style.display=='block'){
                 document.getElementById('slideshow3').style.display='block';
               document.getElementById('slideshow2').style.display='none';
            } else if(document.getElementById('slideshow3').style.display=='block'){
                document.getElementById('slideshow3').style.display='none';
                document.getElementById('slideshow4').style.display='block'
            }else if(document.getElementById('slideshow4').style.display=='block') {
                document.getElementById('slideshow4').style.display='none';
                 document.getElementById('slideshow1').style.display='block';
            }} 
      
      function  rightshow(){
          if(document.getElementById('slideshow4').style.display=='block'){
              document.getElementById('slideshow3').style.display='block';
               document.getElementById('slideshow4').style.display='none';}
             else if(document.getElementById('slideshow3').style.display=='block'){
                 document.getElementById('slideshow3').style.display='none';
               document.getElementById('slideshow2').style.display='block';
            } else if(document.getElementById('slideshow2').style.display=='block'){
                document.getElementById('slideshow2').style.display='none';
                document.getElementById('slideshow4').style.display='block'
            }else if(document.getElementById('slideshow1').style.display=='block') {
                document.getElementById('slideshow1').style.display='none';
                 document.getElementById('slideshow4').style.display='block';
            }
            
          
      }
       
       
   </script>


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


Автор: supervladislav 30.11.2012, 00:55
Когда я писал присвоить = работало как только поставил == ничего .
Вот такая конструкция допустимаедь 
 if(document.getElementById('slideshow1').style.display=='block'){}

Автор: Arantir 30.11.2012, 01:05
supervladislav, в поле style не содержаться данные, добавленные элементам через CSS. Там только значения, добавленные самими JS. Сразу после загрузки страницы ни один style.display у вас не может быть равен 'block'.

Попробуйте добавить после загрузки страницы присвоение 'block' для первого из элементов с помощью JS
Код

document.getElementById('slideshow1').style.display = 'block';

Тогда ваш метод переключения блоков будет работать.

Автор: CruorVult 30.11.2012, 15:03
Цитата(skyboy @  29.11.2012,  15:58 Найти цитируемый пост)
P.S. мне кажется, ты глумишься. сложно поверить, что такой код пишет человек, который только на форуме зареген 6 лет назад, а уж сколько программированием занимается — вообще фиг знает. 


Попробуй ущипнуть себя  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)