Bilder in table ändern

  • In einem Programm zeige ich in einem table Bider an. Ich veränder sie temporär und möchte dann wieder die alten Bilder herstellen.


    Das Zurücksetzen klappt nicht, es werden immer die geänderten Bilder gezeigt.


    Auszug aus dem Programm


    INITIALISIERE BILDER

    var images = {};

    images.img1 = new Image();

    images.img2 = new Image();

    images.img3 = new Image();



    images.img1.src = "Terrorist1.jpg";

    images.img2.src = "Terrorist2.jpg";

    images.img3.src = "Terrorist3.jpg";


    WEISE SIE ZU


    function ZeigNeueBilder()

    { for (var i = 0; i <= anzahlBilder-1; i++) {

    document.getElementById('bl' +zw[i]).appendChild(images['img' + (i+1)]);

    } }


    VERÄNDERE MIT

    document.getElementById('bl' +zw[0]).childNodes[0].src = "Mueder Feind1.jpg";


    Wenn ich dann die Funktion ZeigNeueBilder wieder audrufe, verändert sich nichts.

    Das Bild "muder Feind" bleibt.


    Dank vorab


    Jochen

  • Ich könnte das gesamte Programm schicken, aber da wirst du bei meinen Programmierkünsten nicht durchblicken.

    Ich habe hier das dargestellt was ich mit den Bildern mache,


    Die Funktion ZeigNeueBilfder bringt wie gewünscht die Bilder.


    Mit der Anweisung

    document.getElementById('bl' +zw[0]).childNodes[0].src = "Mueder Feind1.jpg";

    bekomme ich die Bilder geändert.


    Wenn ich jetzt die geänderten Bilder mit der Funktion ZeigNeueBilder zurücksetzen will , dann passiert nichts. Das Bild (Beispiel)" MuederFeind" bleibt und wird nicht durch 'img' + (i+1)' ersetzt.

    Wahrscheinlich muss ich mit remove oder replace arbeiten. Aber das bekomme ich nicht hin. ,

  • ich würde versuchen das du das bild erst mit remove löscht und dann das bild holst. wie sieht den der code aus der hinter "ZeigeNeueBilder" ist.

    ich muss mal gerade selber kucken wie man das mit remove macht ,das weiss ich jetzt auch nicht aus den kopf. fals wer anders schneller ist als ich dann bitte posten. ansonsten suche ich mal was raus wie ich es mit remove machen würde

  • Ich würde einfach eine weitere Funktion nehmen, die den alten Zustand wieder herstellt:

    Code
    function zurueck() {
        for (var i = 0; i <= anzahlBilder-1; i++) {
            document.querySelector('bl' +zw[i] + ' img').src = images['img' + (i+1)].src;
        }
    }

    Oder noch besser, die img-Tags gleich im HTML anlegen und nur das src-Attribut ändern.

  • Klappt leider nicht. Es kommt die Fehlermeldung:


    TypeError: document.querySelector(...) is null


    Zur Info


    'bl' +zw[i] ist die lufende Numer einer Zelle in dem table

  • Ups, da ist mir ein Fehler unterlaufen. So müsste es besser sein:

    Code
    function zurueck() {
        for (var i = 0; i <= anzahlBilder-1; i++) {
            document.querySelector('#bl' +zw[i] + ' img').src = images['img' + (i+1)].src;
        }
    }
  • Funktioniert nicht.


    Ich meine der Ausdruck #bl' +zw[i] + ' img').src

    kann nicht gefunden werden Das Event wird ausgelöst durch


    <tr>

    <td id = "bl0" onclick="hitColor('bl0')"></td>

    <td id = "bl1" onclick="hitColor('bl1')"></td>

    <td id = "bl2" onclick="hitColor('bl2')"></td>

    <td id = "bl3" onclick="hitColor('bl3')"></td>

    ,,,,

    ,,,,


    function hitColor(blink){



    if (document.getElementById(bl).id==('bl' + zw[0]) )

    {

    document.getElementById('bl' +zw[0]).childNodes[0].src = "Mueder Feind1.jpg";


    ZaehlTreffer(0)


    }

    if (document.getElementById(bl).id==('bl' + zw[1]) )

    {

    ...

    ....

    Und


    EIN SCHÖNES 2018 wünsche ich dir. Hast mir oft geholfen in 2017.


    DANKE

  • Jetzt weiß ich leider nicht, was sich hinter diesem zw verbirgt.

    Ich habe jedoch mal einen Test gemacht, und dies funktioniert:

    Versuch mal, ob Du es auf deine Umgebung übertragen kannst.

  • Funktio9niert beio mir nicht. habe ein bis auf diese Funktionen gekürztes Programm beigefügt.


    Bei "eins" kommen die Bilder in SW

    Bei "zwei" in rot.


    Wenn ich eins und dann zwei und dann wieder eins drücke bleiben die roten Bilder


    <!DOCTYPE html>

    <html>

    <head>

    <h1>Konzentration und Schnelligkeit Übung 1</h1>

    <title>Gehirn Aufgabe5</title>

    <style>




    #button1 {

    background-color: #00AFFF;

    border: 5 solid blue;

    color: white;

    padding: 2px 2px;

    text-align: center;

    font-size: 18px;


    }

    table{

    margin-top:30px;

    border: 0px solid white;

    clear:left;

    }


    //td{font-size:40px; padding:4px 10px;


    }

    td {width: 75px;

    height: 75px;

    border:0px solid red;



    }



    </style>

    <script>




    var images = {};

    images.img1 = new Image();

    images.img2 = new Image();

    images.img3 = new Image();

    images.img4 = new Image();

    images.img5 = new Image();


    images.img11 = new Image();

    images.img12 = new Image();

    images.img13 = new Image();

    images.img14 = new Image();

    images.img15 = new Image();


    images.img1.src = "Terrorist1.jpg";

    images.img2.src = "Terrorist2.jpg";

    images.img3.src = "Terrorist3.jpg";

    images.img4.src = "Freund1.jpg";

    images.img5.src = "freund2.jpg";



    images.img11.src = "ToterTerrorist1.jpg";

    images.img12.src = "ToterTerrorist2.jpg";

    images.img13.src = "ToterTerrorist3.jpg";

    images.img14.src = "ToterFreund1.jpg";

    images.img15.src = "ToterFreund2.jpg";




    function Zwei()

    {

    for (var i = 0; i <= 4; i++)

    {

    document.querySelector('#bl' +[i] + ' img').src = images['img' + (i+11)].src;

    }

    }



    function Eins()

    {


    for (var i = 0; i <= 4; i++)

    {


    document.getElementById('bl' +[i]).appendChild(images['img' + (i+1)]);


    }


    }






    </script>

    </head>

    <body>


    <table>


    <tr>


    <td id = "bl0" onclick="hitColor('bl0')"></td>

    <td id = "bl1" onclick="hitColor('bl1')"></td>

    <td id = "bl2" onclick="hitColor('bl2')"></td>

    <td id = "bl3" onclick="hitColor('bl3')"></td>

    <td id = "bl4" onclick="hitColor('bl4')"></td>

    </tr>

    <tr>

    <td id = "bl5" onclick="hitColor('bl5')"></td>

    <td id = "bl6" onclick="hitColor('bl6')"></td>

    <td id = "bl7" onclick="hitColor('bl7')"></td>

    <td id = "bl8" onclick="hitColor('bl8')"></td>

    <td id = "bl9" onclick="hitColor('bl9')"></td>


    </tr>

    <tr>

    <td id = "bl10" onclick="hitColor('bl10')"></td>

    <td id = "bl11" onclick="hitColor('bl11')"></td>

    <td id = "bl12" onclick="hitColor('bl12')"></td>

    <td id = "bl13" onclick="hitColor('bl13')"></td>

    <td id = "bl14" onclick="hitColor('bl14')"></td>

    </tr>


    <tr>

    <td id = "bl15" onclick="hitColor('bl15')"></td>

    <td id = "bl16" onclick="hitColor('bl16')"></td>

    <td id = "bl17" onclick="hitColor('bl17')"></td>

    <td id = "bl18" onclick="hitColor('bl18')"></td>

    <td id = "bl19" onclick="hitColor('bl19')"></td>

    </tr>

    <tr>

    <td id = "bl20" onclick="hitColor('bl20')"></td>

    <td id = "bl21" onclick="hitColor('bl21')"></td>

    <td id = "bl22" onclick="hitColor('bl22')"></td>

    <td id = "bl23" onclick="hitColor('bl23')"></td>

    <td id = "bl24" onclick="hitColor('bl24')"></td>

    </tr>

    </table>





    <input type="button" id="button1" value="eins" onclick="Eins()"></button>

    <input type="button" id="button2" value="zwei" onclick="Zwei()"></button>


    </body>

    </html>

  • Wenn Du die img-Elemente erst beim Klick anlegst, müsstest Du immer überprüfen, ob sie schon existieren, wie ich es in Posting #9 gemacht habe. Es vereinfacht die Sache jedoch sehr, wenn man die Bilder sofort anlegt und beim Klick nur noch das src-Attribut austauscht. Dies funktioniert bei mir:

  • PS: Geht nicht wirklich gut, weil dabei ein Symbol für ein ungültiges Bild angezeigt wird. Besser display auf none oder visibility auf hidden setzen:

    Code
            function loeschen() {
                for (var i = 0; i < anzahlBilder; i++) {
                    document.querySelector('#bl' + i + ' img').style.display = "none";
                }
            }

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!