2016-04-04 2 views
0

У меня есть следующий сценарий в голове элемента:Использование JavaScript для целевого класса

<script> 
function changeOpacity(className) { 

var elems = document.getElementsByClassName(className); 
var index = 0, length = elems.length; 
for (; index < length; index++) { 
    elems[index].style.transition = "opacity 0.3s linear 0s"; 
    elems[index].style.opacity = 0.8; 
    } 
} 
</script> 

<style> 
.red_box {width:100px;height:100px;opacity:1;background:red} 
</style> 

и следующую структуру в элемент тела:

<div onmouseover="changeOpacity('.red_box')">Click to fade red boxes</div> 

<div class="red_box">Box 1</div> 
<div class="red_box">Box 2</div> 
<div class="red_box">Box 3</div> 

Я пытаюсь добиться следующего: когда пользователь нажимает на сообщение «Нажмите, чтобы исчезнуть красным ящиком», функция должна сделать каждый div с классом: «red_box», чтобы стать прозрачным. Мне понравились бы некоторые указатели (не JQuery, пожалуйста), спасибо!

+1

Прозрачность устанавливается в '1' в CSS, а затем ваш код JavaScript * также * устанавливает его в' 1'. Вы хотели установить его на '0'? – Pointy

+0

Упс! Спасибо, Уокей, извините за путаницу. Да, функция должна иметь непрозрачность на 0,8 . Я отредактировал свой вопрос сейчас – user2840467

ответ

3

Удалить точку в имени класса при вызове функции:

onmouseover="changeOpacity('red_box')" 

document.getElementsByClassName(className) принимает имя класса в виде строки. Если вы хотите использовать селектор CSS, вы можете вместо этого использовать document.querySelectorAll('.red_box').

Как указано @pointy в его комментарии, вы также устанавливаете непрозрачность так же, как и начальное значение. Вероятно, хотите изменить это на что-то между 0 и 0.9, в зависимости от уровня прозрачности, который вы хотите.

+0

Я перепутался с необходимостью. в имени класса для querySelectorAll и не нужно его для getElementByClassName! Спасибо, Кристофер – user2840467

1

Вы установили непрозрачность же в CSS и функции, а также вам необходимо удалить точку в onmouseover="changeOpacity('red_box')"

Изменение функции JS и HTML, чтобы быть что-то вроде ниже, и он будет работать хорошо ,

function changeOpacity(className) { 
 

 
    var elems = document.getElementsByClassName(className); 
 
    console.log(elems) 
 
    var index = 0, 
 
    length = elems.length; 
 
    for (; index < length; index++) { 
 
    elems[index].style.transition = "opacity 0.3s linear 0s"; 
 
    elems[index].style.opacity = 0.5; 
 
    } 
 
}
.red_box { 
 
    width: 100px; 
 
    height: 100px; 
 
    opacity: 1; 
 
    background: red 
 
}
<div onmouseover="changeOpacity('red_box')">Click to fade red boxes</div> 
 

 
<div class="red_box">Box 1</div> 
 
<div class="red_box">Box 2</div> 
 
<div class="red_box">Box 3</div>

+0

Теперь я использую этот код - спасибо Пол - это было определенно то, что я сделал из точки в классе, которая вызывала главную проблему (но моя опечатка наличия непрозрачности функции, установленной на 1, не помогла!) – user2840467

+0

@ user2840467 без проблем, рад помочь! –

Смежные вопросы