Kreise verschwinden lassen

programmierer123

Aktives Mitglied
Hallo,
warum erscheint der gelbe und grüne Kreis gleich beim laden der Seite nicht? Sondern erst, wenn man auf den Reset Button klickt?

Und warum verschwindet der gelbe und grüne Kreis nicht, wenn man darauf klickt?
Das habe ich doch so programmiert.

Code:
document.getElementById("kreis_gelb").onclick=document.getElementById("kreis_gelb").style.display="none";
        document.getElementById("kreis_gruen").onclick=document.getElementById("kreis_gruen").style.display="none";

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ampel</title>
<style>
#kreis_rot, #kreis_gelb, #kreis_gruen, #button{
    float:left;
    margin-right:50px;
}
</style>
</head>
<body>
    <div id="kreis_rot"> </div>
        <div id="kreis_gelb"> </div>
        <div id="kreis_gruen"> </div>
        <div><button id="reset">Reset</button>
    </div>
   
    <script>
        function createCircle(id, color,radius){
            document.getElementById(id).style.display="block";
            document.getElementById(id).style.width=2*radius+"px";
            document.getElementById(id).style.height=2*radius+"px";
            document.getElementById(id).style.borderRadius="50%";
            document.getElementById(id).style.backgroundColor=color;
        }

        createCircle("kreis_rot","red",100);
        createCircle("kreis_gelb", "yellow",100);
        createCircle("kreis_gruen", "green",100);

        document.getElementById("reset").onclick=function(){
            createCircle("kreis_rot","red",100);
            createCircle("kreis_gelb", "yellow",100);
            createCircle("kreis_gruen", "green",100);
        }

        document.getElementById("kreis_rot").onclick=function(){
            document.getElementById("kreis_rot").style.display="none";
        }

        document.getElementById("kreis_gelb").onclick=document.getElementById("kreis_gelb").style.display="none";
        document.getElementById("kreis_gruen").onclick=document.getElementById("kreis_gruen").style.display="none";
    </script>
</body>
</html>
 

krgewb

Top Contributor
Bei dem roten steht es ein bisschen anders:
Code:
document.getElementById("kreis_rot").onclick=function(){
     document.getElementById("kreis_rot").style.display="none";
}

Wenn du die beiden Zeilen
Code:
document.getElementById("kreis_gelb").onclick=document.getElementById("kreis_gelb").style.display="none";
document.getElementById("kreis_gruen").onclick=document.getElementById("kreis_gruen").style.display="none";
entfernst werden beim Aufruf der Seite alle drei Kreise angezeigt.
 
Zuletzt bearbeitet:

programmierer123

Aktives Mitglied
Ok, aber ich verstehe nicht, warum diese nicht angezeigt werden. Immerhin sag ich doch, dass nur bei einem KLICK(onclick) auf den Kreis, der Kreis verschwinden soll.
 

mrBrown

Super-Moderator
Mitarbeiter
Das hinter dem Gleichzeichen ist keine Funktion, die du übergibst, sondern wird erst ganz normal ausgewertet, und der Rückgabewert wird dann übergeben.
 

programmierer123

Aktives Mitglied
Das verstehe ich nicht. Warum muss hinter dem Gleichheitszeichen eine Funktion kommen?

Außerdem, sage ich doch, dass nur bei einem Klick auf den Kreis, etwas passieren soll? Oder meinst du, dass diese beiden Codes dasselbe sind?

document.getElementById("kreis_gelb").onclick=document.getElementById("kreis_gelb").style.display="none";

ist dasselbe wie?

document.getElementById("kreis_gelb").onclick;
document.getElementById("kreis_gelb").style.display="none";
 

mrBrown

Super-Moderator
Mitarbeiter
Nein, es wäre das selbe, wenn du die Rückgabe von deiner zweiten Zeile der ersten zuweist.

Es soll doch eine Funktion bei onClick ausgeführt werden, dann solltest du auch eine Funktion zuweisen ;)
 

glass

Neues Mitglied
es tut mir leid, wenn das mit der frage nichts zu tun hat , aber wie kann man in diesem Forum einen Beitrag erstellen????
 

Neue Themen


Oben