2015-10-16 86 views
2

我有以下功能,當觸發時會使DIV變爲半透明。使用querySelectorAll更改多個元素的樣式屬性

function changeOpacity(el) { 
    var elem = document.getElementById(el); 
    elem.style.transition = "opacity 0.5s linear 0s"; 
    elem.style.opacity = 0.5; 
} 

但是我想這個函數同時適用於幾個DIV。我試着給每個DIV使用相同的類名,然後使用getElementsByClassName,但無法弄清楚如何實現它。

querySelectorAll會更合適嗎?如果是的話,我會如何實現它?

+0

** ** 1選擇所有匹配的元素'querySelectorAll' ** 2。**遍歷該集合並將樣式添加到單個元素。我建議使用'classList'類來調用 – Tushar

回答

8

我會用querySelectorAll選擇它們並循環它們。

function changeOpacity(className) { 
    var elems = document.querySelectorAll(className); 
    var index = 0, length = elems.length; 
    for (; index < length; index++) { 
     elems[index].style.transition = "opacity 0.5s linear 0s"; 
     elems[index].style.opacity = 0.5; 
    } 
} 

編輯:正如評論上面所說的,如果他們不動,用你可能會更好把這些價值的一類:使用

elems[index].classList.add('someclass'); 
+0

一個變化 - 需要在var elems行結束時使用逗號代替分號 – user2840467

+0

@ user2840467爲什麼?這不是必需的。然後我需要使用刪除下一行的var聲明使其工作。 – AtheistP3ace

+1

只是爲了簡化它。其實它按照你的說法工作,但我注意到的一件事(不是針對你的正確解決方案,而是一個我沒有解決的問題)是我忘了在我的函數調用中添加完整的類名(slaps head) – user2840467