Цитата:
#col0 { display: block; } #col1 { display: none; } #col2 { display: none; } При заходе на страницу - блок #col0 отображается сразу, по клику на col1 показывается ниже блока #col0 блок #col1 вместо того чтобы сразу скрыть #col0 и показать #col1. По нужному он начинает работать если "потыкать" по очереди несколько раз, а если изначально поставить #col0 { display: none; } то все нормально переключает, но мне нужно чтобы изначально блок #col0 отображался, а остальные были скрыты, и показывать остальные только по клику на определенный label, а предыдущий( что был до этого) - сразу скрыть и показать нужный. |
Цитата:
|
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> |
Цитата:
<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> |
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> |
Спасибо большое, то что нужно!
|
Цитата:
|
У меня такая структура:
<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 его был видимый, а остальные скрыты), если расположение постоянно одинаковое - то все подходит, но если разное как у меня, и меняется постоянно, как заставить его понимать это? помогите пожалуйста... |
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> |
Цитата:
|
Часовой пояс GMT +3, время: 18:23. |