Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 06.06.2017, 17:30
Аспирант
Отправить личное сообщение для PonyS Посмотреть профиль Найти все сообщения от PonyS
 
Регистрация: 19.04.2016
Сообщений: 55

Сообщение от рони Посмотреть сообщение
PonyS,
не осилил, скрипту без разницы какой блок изначально открыт или закрыт,и что в label,главное чтоб было какое -то id со страницы в label.
Сейчас вот такая структура:
#col0 {
display: block;
}
#col1 {
display: none;
}
#col2 {
display: none;
}
При заходе на страницу - блок #col0 отображается сразу, по клику на col1 показывается ниже блока #col0 блок #col1 вместо того чтобы сразу скрыть #col0 и показать #col1. По нужному он начинает работать если "потыкать" по очереди несколько раз, а если изначально поставить #col0 {
display: none;
} то все нормально переключает, но мне нужно чтобы изначально блок #col0 отображался, а остальные были скрыты, и показывать остальные только по клику на определенный label, а предыдущий( что был до этого) - сразу скрыть и показать нужный.

Последний раз редактировалось PonyS, 06.06.2017 в 17:32.
Ответить с цитированием
  #12 (permalink)  
Старый 06.06.2017, 17:37
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от ksa Посмотреть сообщение
Просто зачем так "спамить"?
Да это не специально прости братец
Ответить с цитированием
  #13 (permalink)  
Старый 06.06.2017, 18:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

PonyS,
не понимаю ... ниже код ... что не так?
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  #col0 {
 display: block;
 }
 #col1 {
 display: none;
 }
 #col2 {
 display: none;
 }
  </style>
  <script>
  var label = 'col0';
function Selected(a) {
  document.getElementById(label).style.display='none';
  label = a.value;
  document.getElementById(label).style.display='block';
}

  </script>
</head>

<body>
<style type="text/css">
    .hot{
         border: 1px dashed Gray; padding: 5px; height: 100px; width: 100px
    }

  </style>
  <input name="f" type="radio"  onclick="Selected(this)" value="col0">
  <input name="f" type="radio" onclick="Selected(this)" value="col1">
  <input name="f" type="radio" onclick="Selected(this)" value="col2">
 <div class="hot" id="col0">0</div>
 <div class="hot" id="col1">1</div>
 <div class="hot" id="col2">2</div>
</body>
</html>
Ответить с цитированием
  #14 (permalink)  
Старый 06.06.2017, 18:09
Аспирант
Отправить личное сообщение для PonyS Посмотреть профиль Найти все сообщения от PonyS
 
Регистрация: 19.04.2016
Сообщений: 55

Сообщение от рони Посмотреть сообщение
PonyS,
не понимаю ... ниже код ... что не так?
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  #col0 {
 display: block;
 }
 #col1 {
 display: none;
 }
 #col2 {
 display: none;
 }
  </style>
  <script>
  var label = 'col0';
function Selected(a) {
  document.getElementById(label).style.display='none';
  label = a.value;
  document.getElementById(label).style.display='block';
}

  </script>
</head>

<body>
<style type="text/css">
    .hot{
         border: 1px dashed Gray; padding: 5px; height: 100px; width: 100px
    }

  </style>
  <input name="f" type="radio"  onclick="Selected(this)" value="col0">
  <input name="f" type="radio" onclick="Selected(this)" value="col1">
  <input name="f" type="radio" onclick="Selected(this)" value="col2">
 <div class="hot" id="col0">0</div>
 <div class="hot" id="col1">1</div>
 <div class="hot" id="col2">2</div>
</body>
</html>
Прошу прощения, у меня на странице дублируются radio с value в связи с такой конструкцией...
<input name="f" type="radio"  onclick="Selected(this)" value="col0">
  <input name="f" type="radio" onclick="Selected(this)" value="col1">
  <input name="f" type="radio" onclick="Selected(this)" value="col2">
то бишь на странице 2 дубля таких radio с такими же col1,2,3 , но div только 1 , без дублей. Можно ли как-то связать radio ? чтобы не зависимо от того есть ли дубли такие же radio, все равно чтобы переключало нужный div который выбрали

Вот такая сейчас у меня конструкция:
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  #col0 {
 display: block;
 }
 #col1 {
 display: none;
 }
 #col2 {
 display: none;
 }
  </style>
  <script>
  var label = 'col0';
function Selected(a) {
  document.getElementById(label).style.display='none';
  label = a.value;
  document.getElementById(label).style.display='block';
}

  </script>
</head>

<body>
<style type="text/css">
    .hot{
         border: 1px dashed Gray; padding: 5px; height: 100px; width: 100px
    }

  </style>
  <input name="f" type="radio"  onclick="Selected(this)" value="col0">
  <input name="f" type="radio" onclick="Selected(this)" value="col1">
  <input name="f" type="radio" onclick="Selected(this)" value="col2">
  <input name="fa" type="radio"  onclick="Selected(this)" value="col0">
  <input name="fa" type="radio" onclick="Selected(this)" value="col1">
  <input name="fa" type="radio" onclick="Selected(this)" value="col2">
 <div class="hot" id="col0">0</div>
 <div class="hot" id="col1">1</div>
 <div class="hot" id="col2">2</div>
</body>
</html>
Ответить с цитированием
  #15 (permalink)  
Старый 06.06.2017, 18:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

PonyS,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
 .hot {
 display: none;
 }
 .hot.open {
   display: block;
 }

  </style>
  <script>
window.addEventListener('DOMContentLoaded', function() {
  var div = document.querySelectorAll(".hot"),
      f = document.querySelectorAll("[name='f']"),
      fa = document.querySelectorAll("[name='fa']");
      temp = div[0];
      [].forEach.call(f, function(item, i) {
              item.addEventListener('click', function() {
                    temp.classList.remove("open")
                    div[i].classList.add("open");
                    temp = div[i];
                    fa[i].checked = true;
              });
              fa[i].addEventListener('click', function() {
                    temp.classList.remove("open")
                    div[i].classList.add("open");
                    temp = div[i];
                    f[i].checked = true;
              });


          });
    });
  </script>
</head>

<body>
<style type="text/css">
    .hot{
         border: 1px dashed Gray; padding: 5px; height: 100px; width: 100px
    }

  </style>
  <input name="f" type="radio" >
  <input name="f" type="radio" >
  <input name="f" type="radio" >
  <input name="fa" type="radio" >
  <input name="fa" type="radio" >
  <input name="fa" type="radio" >
 <div class="hot open" >0</div>
 <div class="hot" >1</div>
 <div class="hot" >2</div>
</body>
</html>
Ответить с цитированием
  #16 (permalink)  
Старый 06.06.2017, 18:58
Аспирант
Отправить личное сообщение для PonyS Посмотреть профиль Найти все сообщения от PonyS
 
Регистрация: 19.04.2016
Сообщений: 55

Спасибо большое, то что нужно!
Ответить с цитированием
  #17 (permalink)  
Старый 13.06.2017, 15:38
Аспирант
Отправить личное сообщение для PonyS Посмотреть профиль Найти все сообщения от PonyS
 
Регистрация: 19.04.2016
Сообщений: 55

Сообщение от рони Посмотреть сообщение
PonyS,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
 .hot {
 display: none;
 }
 .hot.open {
   display: block;
 }

  </style>
  <script>
window.addEventListener('DOMContentLoaded', function() {
  var div = document.querySelectorAll(".hot"),
      f = document.querySelectorAll("[name='f']"),
      fa = document.querySelectorAll("[name='fa']");
      temp = div[0];
      [].forEach.call(f, function(item, i) {
              item.addEventListener('click', function() {
                    temp.classList.remove("open")
                    div[i].classList.add("open");
                    temp = div[i];
                    fa[i].checked = true;
              });
              fa[i].addEventListener('click', function() {
                    temp.classList.remove("open")
                    div[i].classList.add("open");
                    temp = div[i];
                    f[i].checked = true;
              });


          });
    });
  </script>
</head>

<body>
<style type="text/css">
    .hot{
         border: 1px dashed Gray; padding: 5px; height: 100px; width: 100px
    }

  </style>
  <input name="f" type="radio" >
  <input name="f" type="radio" >
  <input name="f" type="radio" >
  <input name="fa" type="radio" >
  <input name="fa" type="radio" >
  <input name="fa" type="radio" >
 <div class="hot open" >0</div>
 <div class="hot" >1</div>
 <div class="hot" >2</div>
</body>
</html>
Добрый день! Подскажите пожалуйста, как добавить в этот js код переменные (дублировать), чтоыб добавить 3-4-5 и т.д ряд <input name="fa1"><input name="fa2"><input name="fa3"> чтобы они все так же переключались, просто чтобы увеличить количество самого выбора, а то у меня получилось только копировать код полностью и менять name...Заранее спасибо!
Ответить с цитированием
  #18 (permalink)  
Старый 13.06.2017, 16:06
Аспирант
Отправить личное сообщение для PonyS Посмотреть профиль Найти все сообщения от PonyS
 
Регистрация: 19.04.2016
Сообщений: 55

У меня такая структура:
<input name="f" type="radio" >
<input name="f" type="radio" >
<input name="f1" type="radio" >
<input name="f1" type="radio" >
<input name="f2" type="radio" >
<input name="f2" type="radio" >
<input name="f3" type="radio" >
<input name="f3" type="radio" >
<div class="hot" >0</div>
<div class="hot" >1</div>
<div class="hot" >2</div>
<div class="hot" >3</div>
<div class="hot" >4</div>

И проблема в том, что на странице их расположение постоянно разное, т о бишь может быть только f,f1 и f3, или только f1 и f3 для выбора(может быть сразу и 20 выборов, но разные по name). аналогично с функцией open(чтобы первый radio и div его был видимый, а остальные скрыты), если расположение постоянно одинаковое - то все подходит, но если разное как у меня, и меняется постоянно, как заставить его понимать это? помогите пожалуйста...
Ответить с цитированием
  #19 (permalink)  
Старый 13.06.2017, 16:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

PonyS,
не нужно копировать целииком ответ!
для любых name="f..."
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
 .hot {
 display: none;
 }
 .hot.open {
   display: block;
 }

  </style>
  <script>
window.addEventListener("DOMContentLoaded", function() {
    var a = document.querySelectorAll(".hot"),
        d = a.length,
        b = document.querySelectorAll("[name^='f']"),
        e = a[0];
    [].forEach.call(b, function(f, g) {
        var c = g % d;
        f.addEventListener("click", function() {
            e.classList.remove("open");
            a[c].classList.add("open");
            e = a[c];
            [].forEach.call(b, function(a, b) {
                a.checked = b % d == c
            })
        })
    })
});
  </script>
</head>

<body>
<style type="text/css">
    .hot{
         border: 1px dashed Gray; padding: 5px; height: 100px; width: 100px
    }

  </style>
  <input name="f" type="radio" >
  <input name="f" type="radio" >
  <input name="f" type="radio" >
  <input name="fa" type="radio" >
  <input name="fa" type="radio" >
  <input name="fa" type="radio" >
 <div class="hot open" >0</div>
 <div class="hot" >1</div>
 <div class="hot" >2</div>
</body>
</html>
Ответить с цитированием
  #20 (permalink)  
Старый 13.06.2017, 16:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Сообщение от PonyS
У меня такая структура:
не понимаю
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработчик событий для динамически добавленных элементов Tecvid Events/DOM/Window 28 25.06.2018 13:49
Упрощение скрипта (расширение Хром) x3n1tr0n Javascript под браузер 0 04.02.2015 23:52
Нужны ли дополнительные программы для отображения Java скрипта в браузере? koderman Общие вопросы Javascript 4 07.02.2014 05:25
Настройка отображения div блока m1haluc4 Элементы интерфейса 9 14.07.2013 15:12
Загрузка скрипта в DIV KOTShalun AJAX и COMET 12 18.03.2013 16:03