Wie ich sehe, verwendest Du da die Animation aus deinem anderen Thread.
Ich sehe es mir an ...
Wie ich sehe, verwendest Du da die Animation aus deinem anderen Thread.
Ich sehe es mir an ...
Das war nicht anders zu erwarten. Am besten postest Du mal die URL deiner Seite oder, wenn das nicht möglich ist, das relevante HTML und CSS.
Die fps stammen von einer Version mit setInterval. Wenn Du eine geringe fps hast eignet sich diese besser, denn wenn man requestAnimationFrame umstellt wird es wieder komplizierter. Versuche dies Javascript:
const fps = 25,
aniWrapper = document.getElementById('ani-wrap');
// Gibt an, ob die Animation läuft:
let aniRunning = false;
function animateIt() {
if (aniRunning) {
// Wir nehmen das letzte Bild und stellen es an den Anfang:
aniWrapper.prepend(aniWrapper.lastElementChild);
}
}
// Funktion zyklisch ausführen:
setInterval(animateIt, 1000 / fps);
// Animation starten und stoppen mit Eventhandler
// fuer Mouseover und Mouseout:
aniWrapper.addEventListener('mouseover', event => {
aniRunning = true;
});
aniWrapper.addEventListener('mouseout', event => {
aniRunning = false;
});
Alles anzeigen
Für diese Methode gibt es eine gute Doku von jQuery:
https://learn.jquery.com/events/event-delegation/
ZitatWie komme ich an den Wert des geklickten Buttons
Das ist beim Bubbling nicht anders als beim bisherigen Code: Der geklickte Button steht unter $(this) zur Verfügung und Du kannst den Wert auslesen:
PS: Ich hätte gleich richtig lesen sollen: Das Löschen funktioniert ja jetzt für alle Buttons. Das verbleibende Problem dürfte sein, dass durch das neue Aktualisieren der Liste alle Eventlistener verloren gehen. Auch dies sollte jedoch behoben werden, wenn Du auf das Eventbubbling setzt.
Der Fehler liegt darin, dass Du allen Buttons jeweils die selbe ID zuweist. Eine ID darf es jedoch im Dokument nur einmal geben. Verwende statt dessen eine Klasse und es sollte besser funktionieren.
Versuche dieses:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Demo Animation</title>
<style>
#ani-wrap {
display: flex;
/* Breite auf die der Einzelbilder setzen: */
width: 270px;
overflow: hidden;
}
#ani-wrap img {
/* Verhindern, dass Mausaktionen auch auf die Bilder wirken: */
pointer-events: none;
}
</style>
</head>
<body>
<div id="ani-wrap">
<img src="images/wellen-frames/frame1--wellen.png">
<img src="images/wellen-frames/frame2--wellen.png">
<img src="images/wellen-frames/frame3--wellen.png">
</div>
<script>
const fps = 25,
aniWrapper = document.getElementById('ani-wrap');
// Gibt an, ob die Animation läuft:
let aniRunning = false;
function animateIt() {
// Wir nehmen das letzte Bild und stellen es an den Anfang:
aniWrapper.prepend(aniWrapper.lastElementChild);
// Erneuten Aufruf der Funktion anfordern
// wenn die Animation laufen soll:
if (aniRunning) {
requestAnimationFrame(animateIt);
}
}
// Animation starten und stoppen mit Eventhandler
// fuer Mouseover und Mouseout:
aniWrapper.addEventListener('mouseover', event => {
// Animation starten.
aniRunning = true;
animateIt();
});
aniWrapper.addEventListener('mouseout', event => {
// Animation anhalten:
aniRunning = false;
});
</script>
</body>
</html>
Alles anzeigen
Getestet habe ich es mit 66 Frames, die ich zur Hand hatte.
Verbesserungsmöglichkeiten, die ich zunächst heraus gelassen habe, um es einfach zu halten:
Warum so kompliziert? Dies müsste den Zweck, die verbleibenden Zeichen anzuzeigen, genau so gut erfüllen:
window.addEventListener("load", function () {
let textarea = document.getElementById("fld_8212735_1");
textarea.setAttribute("maxlength", 2000);
const allowedChars = 2000;
textarea.addEventListener("keyup", function (ev) {
const currentChars = textarea.value.length,
remainingChars = allowedChars - currentChars;
document.getElementById("maxChars").innerText = remainingChars;
});
});
Alles anzeigen
Oder ich habe etwas Grundlegendes übersehen.
Dann habe ich ja richtig vermutet.
Ein DOM-Element kannst Du mit remove löschen:
https://developer.mozilla.org/en-US/docs/Web/API/Element/remove
Das click-Event hast Du ja für das #deleteFile registriert. Von das aus musst Du mit der Funktion closest das Element ermitteln, das die betr. Datei anzeigt. Und löschen.
Nein, da ist immer noch alles durcheinander.
So müsste es passen:
$select = "SELECT * FROM `players` ORDER BY $field $ordertype LIMIT 10";
Das DESC gehört zu ORDER BY und hat mit LIMIT nichts zu tun. Wenn Du es weg lässt, sollte die Abfrage wieder funktionieren.
Zitatdas sobald die Datei gelöscht wird, die Seite neu geladen wird, allerdings ohne normale Aktualisierung.
Nein, ich verstehe leider nicht, wie Du das meinst. Hat das etwas mit deiner früheren Frage zu tun:
https://www.html-seminar.de/forum/ws/user/26861-marvintla/
und Du möchtest das Dateienverzeichnis nach dem Löschen aktualisieren?
Häufiges Problem und man kann gut rätseln, wie das zu Stande kommt. Die Erklärung ist, dass per Default die vertikale Ausrichtung von Elementen baseline ist. Das wird hier erklärt:
https://wiki.selfhtml.org/wiki/CSS/Tutor…nterl.C3.A4ngen
mit dem deutschen Begriff "Grundlinie" für Baseline.
Für Text so weit plausibel aber dass das auch auf Bilder einschl. Canvas angewendet wird - na ja.
Macht man die Elemente farbig und fügt einige Buchstaben hinzu, erkennt man, dass auch das Canvas unten an der Grundlinie ausgerichtet ist:
html-seminar.de/woltlab/attachment/3148/
Beheben kannst Du es leicht, indem Du für das Canvas vertical-align: top; setzt. Eine Alternative ist display: flex; für das div weil dann die vertikale Ausrichtung durch align-items bestimmt wird.
ZitatIch habe eine weitere onload Funktion angehängt:
window.onload = function () {
Hier ist wahrscheinlich das Problem, dass Du mit dieser Anweisung die Funktion, die Du zuvor angehängt hast, überschreibst.
Lösung: Alles in einer einzigen Funktion erledigen. Oder beide Funktionen mit addEventListener registrieren, hier ist das "add" wortwörtlich zu verstehen, die Funktion wird hinzu gefügt und überschreibt die vorige nicht.
HTML-Seminar.de - mit Videos zum schnellen Lernen, wie man eine Website selbst erstellt.