Die Grundlagen werden hier beschrieben:
https://de.wikipedia.org/wiki/Formelsammlung_Logik
nicht(a oder b)
liefert das selbe Ergebnis wie
(nicht a und nicht b)
Die Grundlagen werden hier beschrieben:
https://de.wikipedia.org/wiki/Formelsammlung_Logik
nicht(a oder b)
liefert das selbe Ergebnis wie
(nicht a und nicht b)
ZitatAllerdings ist die Table-Syntax nicht mehr state-of-the-art.
Da hast Du Recht, deshalb schrieb ich auch, dass dort keine wirklich gute Lösung gegeben wird.
Da gibt es anscheinend Leute, die sich über Jahre mit der Lösung dieses Problems beschäftigt haben
:
https://stackoverflow.com/questions/1360…e-of-a-document
Leider wird dort auch keine richtig gute und einfache Lösung angeboten.
... und wenn wir eine Funktion getSong definieren, sollten wir sie auch konsequent einsetzen.
Und man kann bei diesem Player problemlos auf jQuery verzichten.
<script>
var songs = [
"audio/01_-_The_Greatest_Cowboy_Of_Them_All.mp3",
"audio/05-Lagos_de_Moreno.mp3",
"audio/09-Asi_Semos_en_Jalisco.mp3"
];
var nameSongs = ["Control", "Sunshine", "Ruleta", "Bebe", "Better Days", "Instagram", "Intentions", "Rojo", "SICKO", "Superstar", "Troubled Water"];
var poster = ["images/busleft.png", "images/busright.png", "images/01_th.jpg"];
var songTitle = document.getElementById("songTitle");
var fillBar = document.getElementById("fill");
var currentTime = document.getElementById("currentTime");
var song = new Audio();
var currentSong = 0;
function playSong() {
song.src = songs[currentSong];
songTitle.textContent = nameSongs[currentSong];
song.play();
}
function playOrPauseSong() {
if (song.paused) {
song.play();
document.querySelector("#play img").src = "Images/buttonpause.png";
}
else {
song.pause();
document.querySelector("#play img").src = "Images/buttonplay.png";
}
}
song.addEventListener('timeupdate', function () {
var position = song.currentTime / song.duration;
fillBar.style.width = position * 100 + '%';
convertTime(Math.round(song.currentTime));
if (song.ended) {
next();
}
});
function convertTime(seconds) {
var min = Math.floor(seconds / 60);
var sec = seconds % 60;
min = (min < 10) ? "0" + min : min;
sec = (sec < 10) ? "0" + sec : sec;
currentTime.textContent = min + ":" + sec;
totalTime(Math.round(song.duration));
}
function totalTime(seconds) {
var min = Math.floor(seconds / 60);
var sec = seconds % 60;
min = (min < 10) ? "0" + min : min;
sec = (sec < 10) ? "0" + sec : sec;
currentTime.textContent += "/" + min + ":" + sec;
}
function next() {
currentSong++;
if (currentSong >= songs.length) {
currentSong = 0;
}
getSong(currentSong);
song.play();
}
function pre() {
currentSong--;
if (currentSong < 0) {
currentSong = songs.length - 1;
}
getSong(currentSong);
song.play();
}
function getSong(idx) {
song.src = songs[idx];
document.querySelector("#songTitle").textContent = nameSongs[idx];
document.querySelector("#image img").src = poster[idx];
}
var seekBar = document.getElementById("seek-bar");
function scrub(e) {
const scrubTime = (e.offsetX / seekBar.offsetWidth) * song.duration;
song.currentTime = scrubTime
console.log(e);
}
seekBar.addEventListener('click', scrub);
getSong(0);
</script>
Alles anzeigen
Und mit ein wenig CSS kann man auch den Fortschrittsbalken zum Leben erwecken:
Kommt mir irgend wie bekannt vor ![]()
Der Fehler liegt in der Funktion getSong:
Ist es vielleicht dieses Plugin:
https://docs.woocommerce.com/document/minmax-quantities/
Normaler Weise müsste es zu solch einem Plugin eine Dokumentation, Handbuch, Beschreibung geben. Da würde ich versuchen, etwas darüber zu finden.
AFAIK kann man Attribut-Selektoren, ebenso wie Klassen, auch kombinieren, dann wäre man schon spezifischer:
querySelector('input[id^="elementor-control-default-"][max=30]');
Ich lese da im Quelltext die Zeichenfolge "woo-" - kann es sein, dass es sich hier um Woocommerce handelt? In dem Fall würde ich intensiv in der Doku suchen, ob man das irgend wie konfigurieren kann.
Hallo Markus und willkommen im Forum!
Deine Vermutung trifft zu: Ein Button ist per Default ein Submitbutton, siehe z. B. hier:
https://wiki.selfhtml.org/wiki/HTML/Formulare/button
Einfachste Lösung: Das type-Attribut auf "button" setzen.
Alternative: Einen Link verwenden und diesen mit CSS wie einen Button gestalten.
Voll ein Syntaxfehler, schließendes Hochkomma fehlte, so ist es richtig:
const ahref = document.querySelector('a[href^="mailto"]');
ahref.href = 'mailto:test@musteremail.de?subject=' + Name + ' &body=' + erg8;
Getestet hiermit:
<a href="mailto:test@@musteremail.de">Mail senden</a>
<script>
// Variablen Name und erg8 muessen vorhanden sein
let Name = 'Betreff', erg8 = 'Der Inhalt';
const ahref = document.querySelector('a[href^="mailto"]');
ahref.href = 'mailto:test@musteremail.de?subject=' + Name + ' &body=' + erg8;
</script>
OK, verstehe, dann hat mich dein früherer Thread in die Irre geführt.
Das Vorgehen ist jedoch das selbe: Schreibe das HTML, das die Variablen enthält, in eine eigene kleine Datei und aktualisiere diese durch fetch, wie früher beschrieben. Wenn es mehrere sind, dann u. U. das HTML der ganzen Tabelle.
Aber irgend wo musst Du doch ein Bild haben, das durch eine PLC-Variable dynamisch gesteuert wird, sonst macht doch das ganze Nachladen keinen Sinn?
In script-Tags setzen und am Ende des Body, vor dem schließenden </body>, einfügen:
<script>
function getStatus() {
fetch('td-status.html')
.then(res => {
return res.text();
}).then(res => {
document.getElementById('td-status').innerHTML = res;
});
}
getStatus();
setInterval(getStatus, 1000);
</script>
</body>
</html>
Alles anzeigen
Und nicht vergessen, der Tabellenzelle die ID "td-status" zu geben.
Das Flackern bekommst du weg, wenn Du das/die Statusbild(er) mit fetch aktualisierst, wie früher beschrieben.
PS: Jedenfalls wenn Du mit Hintergrundbild das aus deinem Posting #3 meinst:
body {background-image: url("cloud7.jpg"); background-position: 0% 0%; background-repeat: no-repeat; background-size: cover; margin-top:1.0cm; margin-left:0.5cm;}
HTML-Seminar.de - mit Videos zum schnellen Lernen, wie man eine Website selbst erstellt.