Beiträge von Sempervivum

    Damit dies funktioniert:
    setTimeout(function(zwzw) {return function() {bringColorNeu(zwzw);}}(zw), 1000 * (i + 1));
    setTimeout(function(zwzw) {return function() {bringColorAlt(zwzw);}}(zw), 1000 * (i + 1));


    musst Du die Zeiten staffeln, denn der zweite Timeout wird ja zur selben Zeit wie der erste gestartet und nicht erst nach Ablauf des ersten. So sollte es funktionieren:
    setTimeout(function(zwzw) {return function() {bringColorNeu(zwzw);}}(zw), 1000 * (i + 1));
    setTimeout(function(zwzw) {return function() {bringColorAlt(zwzw);}}(zw), 1000 * (i + 1) + 1000);


    Zum Blinken schreibe ich später. Du kannst dich schon mal über CSS-Animationen informieren.

    PS: Ich sehe gerade, dass dies nicht funktionieren wird:

    JavaScript
    setTimeout( bringColor(zw), 1000);


    Ruft die Funktion bringColor sofort auf und übergibt den Rückgabewert an setTimeout(). Richtig wäre:

    JavaScript
    setTimeout(function(zwzw) {return function() {bringColor(zwzw);}}(zw), 1000 * (i + 1));

    Ich habe es mir noch nicht im Ganzen angesehen, aber vielleicht hilft dir das:


    • for (var i = 0; i <= anzahlFelder-1; i++)

    • {

    • var zindex=random(z-1);

    • var sindex=random(s-1);

    • indexZelleVorgabe[ i ]=zindex;

    • indexSpalteVorgabe[ i ]=sindex;

    • var zw= (zindex*anzahlSpalten)+sindex;

    • setTimeout( bringColor(zw), 1000 * (i + 1));

    • }

    Wenn ich dich richtig verstehe, kannst Du das erreichen, indem Du das Video exklusiv in eine neue Reihe der Tabelle legst, hinter den beiden Grafiken.
    Benutzung von Tabellen für Layoutzwecke ist nicht mehr zeitgemäß. In deinem Beispiel macht es das Layout IMO unnötig kompliziert - ohne Tabelle wäre es einfacher.

    Zitat

    allerdings hätte ich am liebsten noch zusätzlich einen Button der lediglich die Divs reloaded

    Das geht mit Ajax, wie ich sehe, gibt es darüber auch ein Kapitel hier bei HTML-Seminar. Mit der jQuery-Funktion load() kannst Du auf einfache Weise deine divs in einen Container hineinladen. Du musst nur eine passende PHP-Datei anlegen; den Code dafür hast Du ja schon.

    Wenn Du ein img-Tag verwendest, um das Bild anzuzeigen:

    JavaScript
    currentimage.setAttribute("src", "augeLeer.gif");

    musst Du es auch verwenden, um das Bild zu wechseln:

    JavaScript
    this.src = "augeRot.gif";

    wobei ich vorausgesetzt habe, dass der Eventlistener auf das img registriert ist.

    Nein, Du darfst die PHP-Datei nur einmal einziehen, wenn Du das getan hast, steht sie ein für alle Mal zur Verfügung:

    PHP
    <?php include('url.php'); ?><div class="links"><? echo "$zufallsdiv[1]";	?></div><div class="mitte"><?php echo "$zufallsdiv[2]";	?></div> <div class="rechts"><? echo "$zufallsdiv[3]";	?></div>

    Und wenn Du fünf Zufallsdivs haben willst, wie Du anfangs geschrieben hast, wäre es eleganter, sie in einer for-Schleife zu generieren.

    Meinst Du mit PHP-Rahmen dieses:

    PHP
    <?php    ?>


    Ja, PHP kannst Du nur zwischen diesen Tags verwenden. Du kannst diese jedoch an einer beliebigen Stelle in deinem Dokument notieren, auch mehrfach, und kannst dann auch auf die Variablen bzw. Arrays zugreifen, die Du in der includierten Datei definiert hast.
    echo brauchst Du nur, um HTML- oder auch Javascript auszugeben, das im Dokument an den Browser geliefert wird.

    Das ging ja schnell!

    Zitat

    Würdet Ihr den PHP Code nun auslagern, oder einfach in die Section um die 3 x 3 Divs packen? Dann könnten da natürlich nach gewisser Zeit einige 100 Arrays mit zugeordneten Divs im Quellcode stehen.

    Gute Idee. Ich bin immer dafür, Daten und Logik zu trennen - das würde dafür sprechen, die Definition des Arrays in eine Datei auszulagern und diese mit include einzuziehen.

    Zitat

    Wenn ich die PHP Datei auslagere, wie bekomme ich dann die Divs bzw. Arrays in die html Datei?

    Das ist kein Problem: Wenn Du den ausgelagerten Code mit include einziehst, ist der Effekt derselbe, als wenn Du ihn mit einem Editor an der Position des include eingefügt hättest. D. h. wenn Du in der inkludierten Datei etwas mit echo ausgibst, wird es in der übergeordneten Datei eingefügt und zwar an der Position, wo das echo steht.

    Zitat

    Und ist es möglich zu einer PHP Datei eine CSS Datei zu verlinken, wie bei einer HTML Datei?

    Selbstverständlich, Du kannst deine CSS-Datei genauso wie gewohnt einziehen. Weil das PHP serverseitig ausgewertet wird, sieht der clientseitige Browser nichts davon sondern nur das generierte HTML.

    Offenbar liegt das Problem hier:



    if (!myTable.getAttribute("data-locked"))


    { }
    alert("Nicht gesperrt. Hier geht es weiter");
    this.style.backgroundColor = "yellow";




    Du hast da eine öffnende und eine schließende Klammer direkt hintereinander statt die folgenden Anweisungen einzuklammern. Wahrscheinlich ist dies, was Du eigentlich vor hast:



    if (!myTable.getAttribute("data-locked")) {
    alert("Nicht gesperrt. Hier geht es weiter");
    this.style.backgroundColor = "yellow";


    }

    Ich würde auch empfehlen, es mit PHP zu machen, dann kannst Du die Ladezeit reduzieren, wenn es im Laufe der Zeit viele divs werden.
    Informiere dich über Arrays in PHP und lege den HTML-Text der divs in ein Array. Dann mische dieses Array mit der Funktion shuffle, um eine zufällige Reihenfolge zu bekommen. Dann brauchst Du nur noch in einer for-Schleife die ersten fünf Element auszulesen und mit echo auf deiner Seite auszugeben.

    PS: Ich habe es gerade ausprobiert und dieser Fehler wird leider nicht angezeigt. Ich empfehle dir, dich mit den Entwicklertools deines Browsers vertraut zu machen, dort wird in der Console solch ein Fehler auf jeden Fall angezeigt. VS Community ist aber trotzdem zu empfehlen, er zeigt sehr viele Fehler gleich bei der Eingabe an. Das beschleunigt die Entwicklung ungemein und wenn man sich einmal daran gewöhnt hat, möchte man es nicht mehr missen.

    Code
    tds.style.width = '2px';
    tds[i].style.hight = '2px';

    In beiden Zeilen ist ein Fehler:

    • tds ist eine Nodelist und um ein Element anzusprechen, musst Du den Index verwenden: tds[ i ], so wie Du es in der zweiten Zeile auch tust.
    • Schreibfehler bei hight.


    Edit: Da bin ich wohl hereingefallen: Weil Du keine Codetags verwendet hast, hat das Forum das

    Code
    [i]

    als BBCode für italic interpretiert und verschluckt. 1. entfällt daher. 2. trifft jedoch zu.

    Wenn man es selber machen will, um jQuery zu lernen, ist das natürlich ein Grund und ich will dir einen Hinweis geben, wie man so etwas machen kann:
    Am Anfang ist es am einfachsten, wenn man es mit einer einheitlichen Bildgröße macht. Erzeuge zwei verschachtelte Container, einen inneren und einen äußeren. Der äußere ist so groß wie ein Bild, die Breite des inneren ist variabel, die Höhe gleich der Höhe eines Bildes. Dann packe die Bilder nebeneinander in den inneren Container. Der äußere Container wird relativ, der innere absolut positioniert. Die x-Position (left) animierst Du mit CSS-Transition. Wenn Du jetzt mit deinem jQuery die x-Position des inneren Containers veränderst, kannst Du die Bilder gleiten lassen. Dabei muss die x-Position immer ein Vielfaches der Bildgröße sein.
    Wenn Du Probleme hast, dann melde dich wieder.