06.06.2017, 17:30
|
Аспирант
|
|
Регистрация: 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.
|
|
06.06.2017, 17:37
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
Сообщение от ksa
|
Просто зачем так "спамить"?
|
Да это не специально прости братец
|
|
06.06.2017, 18:02
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
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>
|
|
06.06.2017, 18:09
|
Аспирант
|
|
Регистрация: 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>
|
|
06.06.2017, 18:32
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
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>
|
|
06.06.2017, 18:58
|
Аспирант
|
|
Регистрация: 19.04.2016
Сообщений: 55
|
|
Спасибо большое, то что нужно!
|
|
13.06.2017, 15:38
|
Аспирант
|
|
Регистрация: 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...Заранее спасибо!
|
|
13.06.2017, 16:06
|
Аспирант
|
|
Регистрация: 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 его был видимый, а остальные скрыты), если расположение постоянно одинаковое - то все подходит, но если разное как у меня, и меняется постоянно, как заставить его понимать это? помогите пожалуйста...
|
|
13.06.2017, 16:13
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
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>
|
|
13.06.2017, 16:15
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
Сообщение от PonyS
|
У меня такая структура:
|
не понимаю
|
|
|
|