2016-04-04 13 views
0

Ich habe das folgende Skript im Kopf Element Ziel:Mit Javascript Klasse

<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> 

und die folgende Struktur im Körper Element:

<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> 

ich folgendes zu erreichen bin versucht: Wenn der Benutzer auf die Meldung "Klicken, um rote Felder zu verblassen" klickt, sollte die Funktion jedes Div mit der Klasse "red_box" machen, um transparent zu werden. Ich würde gerne einige Zeiger (nicht Jquery bitte), Danke!

+1

Die Deckkraft wird im CSS auf "1" gesetzt, und dann setzt Ihr JavaScript-Code * auch * auf "1". Wolltest du es auf "0" setzen? – Pointy

+0

Hoppla! Danke Pointy - Entschuldigung für die Verwirrung. Ja, die Funktion sollte die Opazität bei 0,8 haben Ich habe meine Frage jetzt bearbeitet – user2840467

Antwort

3

den Punkt in dem Klassennamen entfernen beim Aufruf der Funktion:

onmouseover="changeOpacity('red_box')" 

document.getElementsByClassName(className) nimmt den Klassennamen als String zurück. Wenn Sie einen CSS-Selektor verwenden möchten, können Sie stattdessen document.querySelectorAll('.red_box') verwenden.

Wie von @ pointy in seinem Kommentar angegeben, setzen Sie die Deckkraft auch auf den Anfangswert. Wahrscheinlich möchten Sie das auf etwas zwischen 0 und 0,9 ändern, abhängig von der gewünschten Transparenz.

+0

Ich habe mich immer wieder mit der Notwendigkeit der. im Klassennamen für querySelectorAll und nicht für getElementByClassName! Danke Christofer – user2840467

1

Sie hatte die Opazität auf das gleiche in der CSS gesetzt und die Funktion, und auch benötigt man in onmouseover="changeOpacity('red_box')"

den Punkt entfernen

Ihre js Funktion und html ändern so etwas wie die unten zu sein und es wird funktionieren gut .

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

Ich benutze jetzt diesen Code - danke Paul - es war definitiv, dass die Addition, die ich von dem Punkt in der Klasse gemacht hatte, das Hauptproblem verursachte (aber mein Tippfehler, die Opazität der Funktion auf 1 gesetzt zu haben, hat nicht geholfen!) – user2840467

+0

@ user2840467 kein Problem, ich bin froh, Ihnen helfen zu können! –

Verwandte Themen