Neue Antwort schreiben
Antworten zu Thema: refresh setTimeout function
Benutzername:
Betreff:
Beitrags-Icon:
Ihre Nachricht:
Smilies
Smile Wink Cool Big Grin
Tongue Rolleyes Shy Sad
At Angel Angry Blush
Confused Dodgy Exclamation Heart
Huh Idea Sleepy Undecided
[mehr]
 
X
Beitragsoptionen:
Themen Abonnement:
Geben Sie die Art der E-Mail-Benachrichtigung und des Abonnements für dieses Thema an (nur registrierte Benutzer).






Themenübersicht (Neueste zuerst)
Geschrieben von rzscout - 18.07.2022, 17:27
(16.07.2022, 19:52)black79 schrieb: hallo,

kann mir einer was zur fehermeldung bootstrap sagen?
https://oesoft.de
[Bild: fehlermeldung_bootstrap.png]

Die ersten Fehler kannst du beheben indem du die Dateien zur verfügung stellst oder die Map-Includes am Ende jeder js-Datei löscht. Für Bootstrap benötigst du jQuery. Jenachdem welche Welche Version du verwendest.
Geschrieben von admin - 17.07.2022, 21:18
Google den Fehler mal , weil ich kann den Fehler nicht finden auf deiner Seite. Wo genau soll der den auftauchen ? Sieht so aus das jQuery fehlt. Also vor Bootstrap muss wohl JQuery eingebunden werden
Geschrieben von black79 - 16.07.2022, 19:52
hallo,

kann mir einer was zur fehermeldung bootstrap sagen?
https://oesoft.de
[Bild: fehlermeldung_bootstrap.png]
Geschrieben von rzscout - 16.07.2022, 14:56
Hi,
ich würde dir empfehlen auf jQuery zu verzichten. Die Performance wird dir es später danken. Ich würde dir auch empfehlen den 'user strict'-Mode anzuwenden. Damit kannst du lokale Variablen verwenden. Das macht die Performance noch besser und man kann außerhalb der Funktion die Variable nutzen ohne eine bestehende zu überschreiben.

Zu Font: In HTML5 und CSS3 kannst du auf font verzichten, da es veraltet ist und nicht dem neuen HTML-Standart entspricht. Verwende hier Elemente wie p, span, und andere Textformatierungs-Elemente. Verwende bitte auch kein width-Attribut mehr, dafür gibt es CSS.

Eine Lösung wäre es für das bzw. entsprechende Elemente eine CSS-Klasse erstellen und dieser Code hier:
field.classList.add('meineKlasse');

Und dann in CSS:

'use strict';
var xhr, infobox, myTable, array_geladen, rsp;
document.addEventListener('DOMContentLoaded', init);
function init() {
    infobox = document.getElementById('infobox');
    myTable = document.getElementsByTagName('table')[0];
    array_geladen = document.getElementById('array_geladen');
    xhr = new XMLHttpRequest();
    xhr.open('POST', 'daten_unerledigt');
    xhr.addEventListener('readystatechange', ()=> {
        if(xhr.status==200&&xhr.readyState==4) {
            rsp = xhr.responseText;
            infobox.innerHTML = "Whatever...";
            let mytBody = document.createElement('tbody');            
            myTable.appendChild(mytBody);
            mytBody.innerHTML = rsp;
            array_geladen.style.display = "block";
        }        
    });
    xhr.send();  
}
Diese Version ist ohne jQuery. Man kann auch fetch.. then.. anstatt XML-Request benutzen. Für mich ist der XMLHttp-Request aber so lesbarer und ich kann damit auch komplexe Requests schreiben.
Geschrieben von black79 - 16.07.2022, 11:48
hier die lösung :

 function dokumentVollständigGeladen(){
	$.ajax({
            type: 'POST',
            url: 'daten_unerledigt.php',
            data:{},    
 	        success: function(response){
				if(response != ausgabe){
				  ausgabe = response;
				   document.getElementById('infobox').innerHTML='<p style="color:green">neue Ereignisse in der SQL-Datenbank (mariadb) erkannt, Daten werden aktualisiert...</p>';
				   document.getElementsByTagName('table')[0].innerHTML = `<tbody>${response}</tbody>`;  
				   document.getElementById('array_geladen').style.display = 'block';
 }
 	}
	});
 }
 
 window.addEventListener('load', dokumentVollständigGeladen, false);
Geschrieben von black79 - 14.07.2022, 15:15
(14.07.2022, 13:40)admin schrieb: setTimeout wird nur einmal ausgeführt , Intervall immer wieder. Wenn du das in einer Funktion hast und sich immer wieder ausführen lässt , ist setInterval falsch , weil dann ruft er sich immer wieder auf bis zum Absturz.
So wie es jetzt aussieht, scheint es richtig zu sein

 hallo admin,

 wenn ich die webseite https://oesoft.de öffne,  soll einmalig die tabelle sofort geladen werden, nicht erst nach 5 sec.
 wie setzte ich das am besten um?
 
 setTimeout(test, 300){
  document.getElementsByTagName('table')[0].innerHTML = `<tbody>${response}</tbody>`; 
 }


tabelle muss ich noch basteln, habe es gestern versucht :-( leider ohne erfolg.
möchte htmlscript und javascript jeweils in einer eigenen datei laufen lassen.
Geschrieben von admin - 14.07.2022, 13:40
setTimeout wird nur einmal ausgeführt , Intervall immer wieder. Wenn du das in einer Funktion hast und sich immer wieder ausführen lässt , ist setInterval falsch , weil dann ruft er sich immer wieder auf bis zum Absturz.
So wie es jetzt aussieht, scheint es richtig zu sein
Geschrieben von black79 - 12.07.2022, 16:42
so müsste es jetzt richtig sein oder?

setInterval() und setTimeout() ist doch von der ausführung her unterschiedlich!
habe zuerst gedacht die funktion ist gleich.

 var ausgabe = 0;
 var relodzeit = 6;

 function refresh(){
	if( zeit <= 0){
	  $.ajax({
            type: 'POST',
            url: 'daten_unerledigt.php',
            data:{},    
 	        success: function(response){
				if(response != ausgabe){
				  ausgabe = response;
				   document.getElementById('infobox').innerHTML='<p style="color:green">neue Daten werden geladen...</p>';
				    setTimeout(function(){
						refresh();
                      }, 3000);
				 }else{
                   document.getElementById('infobox').innerHTML='<p style="color:red">derzeit liegen keine neuen Daten vor...</p>';
				    zeit = relodzeit;
				    setTimeout(function(){
						refresh();
                      }, 3000);
				 }
				
						 
		}
	});
 } else {
	 zeit--;
	 setTimeout(function(){
              document.getElementById('infobox').innerHTML='<p>prüfe Datenbank auf neue Daten in '+zeit+' Sekunden</p>';
              refresh()
         },1000)
 }
}
 

 setTimeout(function(){
	zeit = relodzeit;
	refresh();
 }, 5000);
Geschrieben von black79 - 12.07.2022, 15:00
das mit der datenbank abfrage geht jetzt :-)
dafür habe ich noch ein problem mit der zeit schleife :-(

zeit = 5 sekunden, wieso wird die zeit nicht richtig runtergezählt?

https://oesoft.de

var ausgabe = 0;
var relodzeit = 5;

function refresh(){
	if( zeit <= 0){
	  $.ajax({
            type: 'POST',
            url: 'daten_unerledigt.php',
            data:{},    
 	        success: function(response){
				if(response != ausgabe){
				  ausgabe = response;
				  document.getElementById('infobox').innerHTML='<p style="color:green">neue Daten werden geladen...</p>';
				 }else{
                  document.getElementById('infobox').innerHTML='<p style="color:red">derzeit liegen keine neuen Daten vor...</p>';
				 }
				
						 
		}
	});
 } else {
	 zeit--;
	 setTimeout(function(){
              document.getElementById('infobox').innerHTML='<p>prüfe Datenbank auf neue Daten in '+zeit+' Sekunden</p>';
              refresh()
         },1000)
 }
}
 

 setInterval(function(){
	zeit = relodzeit;
	refresh()
 }, 5000);
Geschrieben von black79 - 11.07.2022, 14:43
(11.07.2022, 14:27)admin schrieb: Zb so
var x=0
daten holen
var response=241;
if(x!=response){
// daten holen
x=response;
// x hat jetzt auch den wert von 241:
solange response auch 241 hat passiert nichts
wenn datenbank jetzt mehr oder wenniger als 241 hat ist x ungleich response und holt neue daten
}else{

// nichts machen
}

Verstehst du das so wie ich das meine ?

ja, jetzt ist mir ein licht aufgegangen ! nochmals vielen dank
Dieses Thema hat mehr als 10 Antworten. Ganzes Thema lesen.