Скрытие всех элементов с тем же именем класса?
Я пытаюсь скрыть элементы с тем же именем класса (float_form), но я также пытаюсь использовать script ниже, чтобы показать их (все классы div float_form изначально скрыты). Я просмотрел множество jquery-решений, но я не могу заставить их работать.
function show(a) {
var e = document.getElementById(a);
if (!e)
return true;
if (e.style.display == "none") {
e.style.display = "block"
} else {
e.style.display = "none"
}
return true;
}
Изменить: Извините, если это было неясно, я не намерен использовать JQuery (и я знаю, что это не jquery). Я ищу способ использовать javascript для распознавания повторяющихся имен классов, которые не находятся в стиле = display: none; без компрометации элемента show/hide ID, поскольку в качестве ключа есть цикл с идентификатором div. Html для div выглядит следующим образом: {item.ID} является циклом while.
<div class="float_form" id="{item.ID}" style="display: none;">
Ответы
Ответ 1
ванильный javascript
function toggle(className, displayState){
var elements = document.getElementsByClassName(className)
for (var i = 0; i < elements.length; i++){
elements[i].style.display = displayState;
}
}
toggle('float_form', 'block'); // Shows
toggle('float_form', 'none'); // hides
JQuery
$('.float_form').show(); // Shows
$('.float_form').hide(); // hides
Ответ 2
Если вы смотрите в jQuery, то хорошо знать, что вы можете использовать селектор классов внутри параметров $
и вызвать метод .hide()
.
$('.myClass').hide(); // all elements with the class myClass will hide.
Но если вы хотите переключиться, используйте .toggle();
Но здесь я беру хороший переключатель без, используя jQuery:
function toggle( selector ) {
var nodes = document.querySelectorAll( selector ),
node,
styleProperty = function(a, b) {
return window.getComputedStyle ? window.getComputedStyle(a).getPropertyValue(b) : a.currentStyle[b];
};
[].forEach.call(nodes, function( a, b ) {
node = a;
node.style.display = styleProperty(node, 'display') === 'block' ? 'none' : 'block';
});
}
toggle( '.myClass' );
Демо здесь (нажмите "Render" для запуска): http://jsbin.com/ofusad/2/edit#javascript,html
Ответ 3
Попробуйте:
function showClass(a){
var e = [];
var e = getElementsByClassName(a);
for(i in e ){
if(!e[i])return true;
if(e[i].style.display=="none"){
e[i].style.display="block"
} else {
e[i].style.display="none"
}
}
return true;
}
демонстрация: showClass("float_form");