Durchsuche Foren

(Erweiterte Suche)

Foren-Statistiken
» Mitglieder: 43.421
» Neuestes Mitglied: rentgals0
» Foren-Themen: 504
» Foren-Beiträge: 2.091

Komplettstatistiken

Benutzer Online
Momentan sind 35 Benutzer online
» 0 Mitglieder
» 34 Gäste
Bing

Aktive Themen
Probleme Firebase Databas...
Forum: Javascript
Letzter Beitrag: PrimoCenturio
22.04.2024, 14:15
» Antworten: 4
» Ansichten: 112
Verbindung von Entscheidu...
Forum: Javascript
Letzter Beitrag: Ashriel
16.04.2024, 11:02
» Antworten: 3
» Ansichten: 101
Neu laden ohne Scrolling
Forum: Javascript
Letzter Beitrag: Tom
16.04.2024, 08:48
» Antworten: 0
» Ansichten: 34
Formularfelder addieren u...
Forum: Javascript
Letzter Beitrag: heena123
16.04.2024, 08:03
» Antworten: 17
» Ansichten: 366
FMOVIES
Forum: Javascript
Letzter Beitrag: xomanig690
16.04.2024, 07:07
» Antworten: 0
» Ansichten: 40
Spam gelöscht
Forum: Ankündigungen,Neuigkeiten
Letzter Beitrag: rzscout
10.04.2024, 23:37
» Antworten: 0
» Ansichten: 170
Reihenfolge der Karten
Forum: Brauche Javascript / Userscript
Letzter Beitrag: hardee
10.04.2024, 17:54
» Antworten: 4
» Ansichten: 111
Variable aus Funktion zur...
Forum: Javascript
Letzter Beitrag: Kai_Behncke
27.03.2024, 14:58
» Antworten: 2
» Ansichten: 127
Probleme mit Canvas
Forum: Javascript
Letzter Beitrag: Sempervivum
27.03.2024, 09:28
» Antworten: 5
» Ansichten: 254
Bildauswahl Reset
Forum: Javascript
Letzter Beitrag: Sempervivum
25.03.2024, 05:38
» Antworten: 6
» Ansichten: 266

Question html input mit JavaScript verbinden
Geschrieben von: Starrattom - 14.10.2022, 18:36 - Forum: Javascript - Antworten (1)

Hallo ich habe ein Problem! Ich programmiere eine Vokabel-App und habe schon Folgendes programmiert:

Code:
<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vokabel-Play</title>
</head>
<body>
<h1><b><u>Grundlagen 1</u></b></h1>
<br>
<h3>ERSTEN</h3>
Schreibe Hallo auf Englisch:
<form>
<label for="vokabel">Vokabel
    <input id="vokabel" name="vokabel">
  </label>
</form>
    <script>
if (vokabel = hello) {alert(Lol)}
else{alert("Falsch") }
    </script>
</body>
</html>
Wenn man die Website öffnet erscheint ein Input Feld das ich mithilfe von html gecodet habe.
Ich will das wenn die Vokabel richtig ist ein alert erscheint.
Mein Problem: Ich weiss nicht wie ich diesen html Input mit JavaScript verbinden kann.
Ich hoffe jemand versteht dieses Problem und kann mir helfen!

LG

Drucke diesen Beitrag

  Erklärung von Array from map und [...xxx]
Geschrieben von: Dvdscot - 12.10.2022, 10:52 - Forum: Javascript - Antworten (2)

Hallo,

bin seit einiger Zeit dabei nen Graphen mit allerlei Funktionen zu programmieren.

Als erstes hab ich Zufallsdaten generiert und in ein zweidimensionales Array gepackt und zwar ganz klassisch mit for Schleife und Push, so wie ich das in der Weiterbildung gelernt habe.
Der Code war lang aber hat funktioniert. Musste dann was ändern und ein Experte hat mir dabei geholfen. Er hat das ganze in nur ein paar Zeilen gemacht und zwar mit array from und map.
Außerdem hat er [...array] benutzt, das hab ich alles mal in Büchern gelesen. Map ist wohl die einfachere Variante was zusammen zu schweißen.

Code:
const y_red = Array.from({length: points}, () => Math.round(Math.random() * (max - min)) + min)
y_red.sort((a,b) => a-b);

const y_green = [...y_red];
y_green.sort((a,b) => b-a);

const dataset1 = y_red.map((y,i) => [x_values[i],y]);

Ich hatte das hier vorher:

          let min = 0;
            let max = 200;
            let x_arr = [];
            let y_arr = [];
            let s_arr = [];
            let z_arr = [];

            for (let i = 0; i < 6480; i++) {
                var r = Math.round(Math.random() * (max - min)) + min;
                x_arr[i]= i;
                y_arr[i]= r;
                z_arr.push([x_arr[i],y_arr[i]]);
            }

            s_arr = y_arr.sort(function(a, b){return a - b});

            let neu_arr = [];
            let zz_arr = [];

            for (let i = 0; i < 6480; i++) {
                neu_arr[i]= i;
                zz_arr.push([neu_arr[i], s_arr[i]]);
 


Kann mir jemand die obige Methode erklären bitte? Danke

Drucke diesen Beitrag

Question Mehrdimensionales Array - Loopen
Geschrieben von: Exorior - 08.10.2022, 19:18 - Forum: Javascript - Keine Antworten

Hallo Liebe Community, 

da ich in Javascript leider noch nicht so fit und gerade am verzweifeln bin, wende ich mich an euch  Heart

Folgende Problemstellung:
Ich übergebe ein PHP Array mit der Bezeichnung "persons" an eine Javascript Funktion:

[0]['id']['1']
[0]['name']['alfred']
[0]['beruf']['metzger']

[1]['id']['2']
[1]['name']['benjamin']
[1]['beruf']['maler']


Im Javascript muss ich nun auf die Werte zugreifen (also z.B. 1,alfred,metzger).
Am besten ich kann mir die Werte so abspeichern:
id = 1;
name = "alfred"
beruf = "metzger"

leider schaffe ich es nicht auf die Werte zuzugreifen -.-
Bisher habe ich das gefunden: (bringt mich aber nicht weiter, da ich 3 Dimensionen habe -.-)

Code:
for (const [index, value] of persons.entries()) { 
    console.log(index,value);
}

Drucke diesen Beitrag

  [gelöst] Kombinierte Bedingung für Sichtbarkeit funktioniert nicht
Geschrieben von: Miq19 - 08.10.2022, 14:42 - Forum: Javascript - Antworten (2)

[Update, Selbstkommentar]
Das Problem waren zwei Merkervariablen R1an und R2an, in fälschlicherweise innerhalb der window.onload-Funktion definiert waren, statt außerhalb. Deswegen lief die erste Funktion, die sie verwenden wollte, auf einen Fehler und der Ablauf stoppte dann.

Hallo zusammen,

ich habe vor vielen Jahren mal die Anfänge von Javascript mitbekommen, danach aber nichts mehr damit gemacht. Insofern bin ich wieder ein Newbie und hampele mich etwas durch. Ich hoffe, Ihr könnt mir bei meinem Problem auf die Sprünge helfen.

Problemstellung:

- eine Eingabemaske mit drei unterschiedlichen Segmenten.
- Segment "Radio 1" und "Radio 2" sind identisch aufgebaut und enthalten jeweils zwei Unterbereiche ("Feld 1"/"Feld 2" bzw. "Feld 3"/"Feld 4"), die abhänging von 3 Radiobuttons beide aus, einer an oder beide an sein sollen.
- Segment drei soll nur sichtbar werden, wenn in Segment 1 und 2 jeweils mindestens ein Unterbereich zu sehen ist.
- der Zustand der beiden Radiobutton-Gruppen wird durch ein Setzen der zugehörigen Variablen in windows.onload vorgegeben.

Die angehängte HTML-Datei enthält meine bisherige Lösung. Sie funktioniert aber nicht richtig, und ich verstehe nicht, warum nicht.
Der Fehler: im window.onload wird scheinbar die Funktion checkUniversal() nur für Segment 1 aufgerufen, zumindest poppt nur der alert() dafür auf. Die Radiobuttons sind aber entsprechend der Vorgabewerte selektiert.
Sobald ich dann Radiobuttons anklicke, normalisiert sich das, es ist also nur die Initialisierung falsch. Aber warum? Huh



Angehängte Dateien Thumbnail(s)
   

.html   test.html (Größe: 5,11 KB / Downloads: 1)
Drucke diesen Beitrag

  Was ist ein Schwanenhals Mikrofon und wie funktioniert es?
Geschrieben von: lisapark - 08.10.2022, 10:10 - Forum: Hier dürft ihr Webung machen - Keine Antworten

schwanenhals mikrofone sind für den Einsatz in AV- und Konferenz Umgebungen, Beschallungs-Paging-Systemen und anderen Situationen vorgesehen, in denen gesprochene Worte aufgenommen werden müssen, der Moderator jedoch kein Handmikrofon verwenden möchte, z. B. mit einem Rednerpult. schwanenhals mikrofone werden gegenüber Grenzflächen mikrofonen bevorzugt, wenn es Hindernisse gibt, die verhindern könnten, dass die Quelle (die Stimme einer Person) das Mikrofon effektiv erreicht.
Wie funktioniert ein schwanenhals mikrofon?
Itplatz gibt Ihnen alle Informationen über schwanenhals mikrofone und Sie können schwanenhals mikrofon auch auf unserer Website kaufen.


schwanenhals mikrofone nehmen den Ton von oben auf und sind normalerweise mit einem Richtmikrofon ausgestattet, das den Ton in einem ziemlich breiten Muster aufnimmt, das als Niere bezeichnet wird. Sie können auch eine Superniere verwenden, die eine engere, geschlossenen Richtcharakteristik hat. Das Mikrofon, das zum Schutz vor Atemgeräuschen und anderen Dingen einen Windschutz haben kann oder auch nicht, wird am Ende eines Schwanenhalses montiert, der eine Länge von 5 bis 18 Zoll haben kann.
Wie kann man ein schwanenhals mikrofon montieren?
schwanenhals mikrofone nehmen den Ton von oben auf und sind typischerweise mit einem Richtmikrofon mit Nierencharakteristik ausgestattet, das den Ton in einem ziemlich breiten Muster aufnimmt. Es könnte auch eine Superniere verwendet werden, die eine engere, geschlossenen Richtcharakteristik hat. Das Mikrofon wird am Ende eines Schwanenhalses montiert, der eine Länge von 5 bis 18 Zoll haben kann und möglicherweise einen Windschutz zum Schutz vor Atemgeräuschen und anderen ähnlichen Dingen hat oder nicht.

Drucke diesen Beitrag

  Code check/Feedback
Geschrieben von: Förster - 07.10.2022, 13:52 - Forum: Javascript - Antworten (1)

Moin, wer Interesse hat kann sich ja gerne mal den JavaScript code anschauen, hab selbständig einen Taschenrechner programmiert und mir das selber angeeignet. Würde gerne ein paar Tipps bekommen von Profis, also wer möchte kann es sich gerne mal anschauen Smile 


Code:
    let arrayergebnis = ["","","","",""];
    let arrayzahl = ["","","","",""];
function Ergebnis() {
    let x = eval(document.getElementById('Display').value)  + ("");
    let num = eval(document.getElementById('Display').value)
    let arrayFrom = x.split('');
    speicher();
    if(arrayFrom.indexOf('.') == "-1" ) {
        document.getElementById('Display').value = x;
    }
    
    if(arrayFrom.indexOf('.') == "1" ) {
        let runden = document.getElementById('dezimal').value;
        let fix = num.toFixed(runden);
        document.getElementById('Display').value = fix;
    }
    document.getElementById('Displayausgabe1').value = arrayzahl[0];
    document.getElementById('Displayausgabe2').value = arrayzahl[1];
    document.getElementById('Displayausgabe3').value = arrayzahl[2];
    document.getElementById('Displayausgabe4').value = arrayzahl[3];
    document.getElementById('Displayausgabe5').value = arrayzahl[4];
    
    speicherE();
    let ergebnis = document.getElementById('Display').value

    document.getElementById('DisplayausgabeE1').value = arrayergebnis[0];
    document.getElementById('DisplayausgabeE2').value = arrayergebnis[1];
    document.getElementById('DisplayausgabeE3').value = arrayergebnis[2];
    document.getElementById('DisplayausgabeE4').value = arrayergebnis[3];
    document.getElementById('DisplayausgabeE5').value = arrayergebnis[4];
}        

function Hinzufuegen(Zeichen) {
    let display = document.getElementById('Display').value;
    document.getElementById('Display').value = display + Zeichen;
}

function loeschen() {
    let display = document.getElementById('Display').value;
    let end = display.length -1;
    let result = display.substring (0, end);
    document.getElementById('Display').value = result;
}

function loeschenkom() {
    let display = document.getElementById('Display').value;
    let end = display.length -528;
    let result = display.substring (0, end);
    document.getElementById('Display').value = result;
}

function speicher() {
    let ausp = (document.getElementById('Display').value);
    let arraybackup = [arrayzahl[0],arrayzahl[1],arrayzahl[2],arrayzahl[3],arrayzahl[4]]
    arrayzahl[0] = ausp
    arrayzahl[1] = arraybackup[0]
    arrayzahl[2] = arraybackup[1]
    arrayzahl[3] = arraybackup[2]
    arrayzahl[4] = arraybackup[3]
}

function speicherE () {
    let ergebnis = document.getElementById('Display').value
    let arraybackupE = [arrayergebnis[0],arrayergebnis[1],arrayergebnis[2],arrayergebnis[3],arrayergebnis[4]]
    arrayergebnis[0] = ergebnis
    arrayergebnis[1] = arraybackupE[0]
    arrayergebnis[2] = arraybackupE[1]
    arrayergebnis[3] = arraybackupE[2]
    arrayergebnis[4] = arraybackupE[3]    
}

function rechnungback1 () {
    let back = (document.getElementById('Displayausgabe1').value)
    document.getElementById('Display').value = back;    
}

function rechnungback2 () {
    let back = (document.getElementById('Displayausgabe2').value)
    document.getElementById('Display').value = back;
}

function rechnungback3 () {
    let back = (document.getElementById('Displayausgabe3').value)
    document.getElementById('Display').value = back;
}

function rechnungback4 () {
    let back = (document.getElementById('Displayausgabe4').value)
    document.getElementById('Display').value = back;
}

function rechnungback5 () {
    let back = (document.getElementById('Displayausgabe5').value)
    document.getElementById('Display').value = back;
}

function quadrat () {
    let display = Math.pow(document.getElementById('Display').value, 2);
    document.getElementById('Display').value = display;
}

function plusminus () {
    let anzeige = document.getElementById('Display').value;
    if(anzeige.indexOf('-') == "0" ) {
        let    dstring = anzeige.substring(1)
        document.getElementById('Display').value =("+" + dstring);    
    }
    if(anzeige.indexOf('-') == "-1" ) {
        let    dstring = anzeige.substring(0)
        document.getElementById('Display').value =("-" + dstring);    
    }    
    if(anzeige.indexOf('+') == "0" ) {
        let    dstring = anzeige.substring(1)
        document.getElementById('Display').value =("-" + dstring);    
    }    
}

function prozent () {
    let anzeige = document.getElementById('Display').value;
    let berechnung = anzeige / 100
    document.getElementById('Display').value = berechnung;
}

function sinus () {
    let anzeige = Math.sin(document.getElementById('Display').value);
    document.getElementById('Display').value = anzeige;
}

function cosinus () {
    let anzeige = Math.cos(document.getElementById('Display').value);
    document.getElementById('Display').value = anzeige;
}
Code:
<!DOCTYPE html>
<html lang="de">
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="style.css">
        <title>Taschenrechner</title>
        <script id=text type="text/javascript" src="javascript.js"></script>
    </head>


    <header class="header">
    <h1>Taschenrechner</h1>
    </header>
    <p>
    <body>
        <form>
        <div class="links">
        <table>
            <tr>
                <td>
                    <input size=28 type="text" id="Display" name="Display" align="right" class="display"></td><td>
            </tr><tr>
            <td>
        <table>
            <tr>
                <td><input type="button" width="60" class="button" value="  %  " onClick="prozent()"></td>
                <td><input type="button" width="60" class="button" value="  x²  " onClick="quadrat()"></td>
                <td><input type="button" width="60" class="button" value="  +/- " onClick="plusminus()"></td>
                <td><input type="button" width="60" class="button" value="sin " onClick="sinus()"></td>
                <td><input type="button" width="60" class="button" value="cos " onClick="cosinus()"></td>
            </tr>
            <tr>
                <td><input type="button" width="60" class="button" value="  7   " onClick="Hinzufuegen('7')"></td>
                <td><input type="button" width="60" class="button" value="  8   " onClick="Hinzufuegen('8')"></td>
                <td><input type="button" width="60" class="button" value="  9   " onClick="Hinzufuegen('9')"></td>
                <td><input type="button" width="60" class="button" value="  +  " onClick="Hinzufuegen('+')"></td>
                <td><input type="button" width="60" class="button" value="  (   " onClick="Hinzufuegen('(')"></td>
            </tr>
            <tr>
                <td><input type="button" width="60" class="button" value="  4   " onClick="Hinzufuegen('4')"></td>
                <td><input type="button" width="60" class="button" value="  5   " onClick="Hinzufuegen('5')"></td>
                <td><input type="button" width="60" class="button" value="  6   " onClick="Hinzufuegen('6')"></td>
                <td><input type="button" width="60" class="button" value="  -   " onClick="Hinzufuegen('-')"></td>
                <td><input type="button" width="60" class="button" value="  )   " onClick="Hinzufuegen(')')"></td>
            </tr>
            <tr>
                <td><input type="button" width="60" class="button" value="  1   " onClick="Hinzufuegen('1')"></td>
                <td><input type="button" width="60" class="button" value="  2   " onClick="Hinzufuegen('2')"></td>
                <td><input type="button" width="60" class="button" value="  3   " onClick="Hinzufuegen('3')"></td>
                <td><input type="button" width="60" class="button" value="  *   " onClick="Hinzufuegen('*')"></td>
                <td><input type="button" width="60" class="button" value="  <  " onClick= "loeschen()"></td>
            </tr>
            <tr>
                <td><input type="button" width="60" class="button" value="  0   " onClick="Hinzufuegen('0')"></td>
                <td><input type="button" width="60" class="button" value="  .   " onClick="Hinzufuegen('.')"></td>
                <td><input type="button" width="60" class="button" value="  =   " onClick="Ergebnis()"></td>
                <td><input type="button" width="60" class="button" value="  /   " onClick="Hinzufuegen('/')"></td>
                <td><input type="button" width="60" class="button" value="  C  " onClick="loeschenkom ()"></td>
            </tr>
            <tr>
            <label>Kommastellen:</label>
                    <select id="dezimal" size="1" title="ax" >
                        <option> 0 </option>
                        <option> 1 </option>
                        <option> 2 </option>
                        <option selected> 3 </option>
                        <option> 4 </option>
                        <option> 5 </option>
                    </select>
                <!--    <input type="button" width="60" class="button" value="  back   " onClick="rechnungback()"> -->
            
            </tr>
        </table>
        </form>
        </div>
    </body>

        <div class="rechts">
                <input size=28 type="text" readonly id="Displayausgabe1" name="Display" align="right" class="display2">=<input size=10 type="text" readonly id="DisplayausgabeE1" name="Display" align="right" class="displayE2"><input size=2 type="button" readonly id="Displayausgab" value="Back" align="right" onClick="rechnungback1()" class="button"><p>
                <input size=28 type="text" readonly id="Displayausgabe2" name="Display" align="right" class="display2">=<input size=10 type="text" readonly id="DisplayausgabeE2" name="Display" align="right" class="displayE2"><input size=2 type="button" readonly id="Displayausgab" value="Back" align="right" onClick="rechnungback2()" class="button"><p>
                <input size=28 type="text" readonly id="Displayausgabe3" name="Display" align="right" class="display2">=<input size=10 type="text" readonly id="DisplayausgabeE3" name="Display" align="right" class="displayE2"><input size=2 type="button" readonly id="Displayausgab" value="Back" align="right" onClick="rechnungback3()" class="button"><p>
                <input size=28 type="text" readonly id="Displayausgabe4" name="Display" align="right" class="display2">=<input size=10 type="text" readonly id="DisplayausgabeE4" name="Display" align="right" class="displayE2"><input size=2 type="button" readonly id="Displayausgab" value="Back" align="right" onclick="rechnungback4()" class="button"><p>
                <input size=28 type="text" readonly id="Displayausgabe5" name="Display" align="right" class="display2">=<input size=10 type="text" readonly id="DisplayausgabeE5" name="Display" align="right" class="displayE2"><input size=2 type="button" readonly id="Displayausgab" value="Back" align="right" onclick="rechnungback5()" class="button">
        </div>
    

    <footer>
    </footer>
</html>

Drucke diesen Beitrag

  Hilfe bei obs-websocket
Geschrieben von: diabolusUmarov - 07.10.2022, 06:38 - Forum: Javascript - Antworten (7)

Mahlzeit!

Ich muss zugeben, ich habe mich so gut es geht um Javascript gedrückt. Leider rächt sich das jetzt.

Ich versuche eine WebApp zu entwickeln, mit der sich OBS-Studio steuern lässt. Ja, davon gibt es schon welche, aber mir geht es mehr um die Entwicklung, als um das fertige Produkt. Man lernt einfach mehr beim entwickeln, als beim benutzen und jede Erfahrung, die man machen kann, kann man ja mitnehmen.

So. Das Problem ist folgendes. Um OBS-Studio mittels Websocket steuern zu können, versuche ich mich jetzt mit Javascript. Prinzipiell ist mir die Syntax und das alles nicht fremd, da ich in C/C++, PHP und manchmal in Javascript programmiere. Gelegentlich auch mal in Lua und vor einigen Jahren auch in LSL  Also so ganz der Anfänger bin ich jetzt nicht.

Als Referenz benutze ich die Seite obs-websocket-js.

ich habe auch alles soweit verstanden, dass ich eine Verbindung zu OBS-Studio aufbauen und die zurückgegebenen Werte verarbeiten kann.

Probleme ergeben sich hier:

Code:
import OBSWebSocket, {EventSubscription} from 'obs-websocket-js';
const obs = new OBSWebSocket();

obs.connect('ws://127.0.0.1:4455', undefined, {
  eventSubscriptions: EventSubscription.All | EventSubscription.InputVolumeMeters,
  rpcVersion: 1
});

Bei meinem ersten Versuch bekam ich mitgeteilt, dass man "import" nur in Modulen ausführen darf. Also habe ich bei <script> noch type="module" eingefügt. Damit funktioniert zwar der Import, aber anscheinend wird da kein export von "EventSubscription" vorgenommen, so dass "EventSubscription.All" nicht gefunden wird. Das ist schlecht, denn anscheinend muss ich, wenn ich mich bei OBS-Studio anmelde, auch erklären,was ich benutzen will. Zumindest habe ich es so verstanden denn zum Beispiel:

Code:
obs.call("GetSceneList");

wirft mir dann den Fehler, dass der Socket nicht identifiziert ist.

Aber irgendwie komme ich nicht auf den Punkt, wo eigentlich mein Fehler liegt. Die Dokumentation finde ich sehr gut, aber ich musste dafür auch erst einmal lernen, was überhaupt Promise ist. Wie gesagt, um Javascript habe ich mich erfolgreich gedrückt.

Kann mir da jemand auf die Sprünge helfen?

Drucke diesen Beitrag

  Events feuern zu schnell, wie Stack für Events einbauen?
Geschrieben von: bernd - 06.10.2022, 22:09 - Forum: Javascript - Antworten (2)

Hallo,
ich kämpfe immer noch damit die bei einem Online Roulettespiel passierenden HTTP Requests und Responses zu verarbeiten.
Heißt ich habe ein Contentscript (ja, ich werkle an eienr Chrome extension), die in der Theorie jedes Event abfängt, nur bestimmte Events mit bestimmter Response verwertet und dann vielerlei DOM Veränderungen vornimmt,
unter Anderem gewisse div Elemente sucht, aus der Dom removed und neu zusammenbaut und wieder reinpackt.

Nur komme ich mit dem Verhalten des Ganze gar nicht klar.
Die auftretenden Requests und Responses sind sehr eindeutig und klar, an Denen kanns nicht liegen.
Aber manchmal scheint so Manches Event nicht oder nicht ganz verarbeitet zu werden.

Eigentlich soll er bspw. bei einer bestimmten Response aus deren Responsebody eine Farbe ablesen und daavon ausgehend eine schwarze, blaue oder weiße Box anzeigen.
Also die alte Box removen und eine neue Box in der passenden Farbe in die DOM wieder einfügen (Box ist in meinem Fall ein div Element, darin ein p Element mit passender Hintergrundfarbe und Abmessungen).

Tut er aber nicht.
Auch amcht sien verhalten nciht immer Sinn.
Bspw. wird in eienr der bestimmten Response eine Balance mitgeshcickt, eigentlich soll bei der Response die Differenz zur alten balance berechnet werden und von dieser Differenz ausgehend wieder eine bestimmte Farbbox gemalt werden.

Klappt nur nicht immer bzw. nur in jedem dritten Fall.
Manchmal reagiert er, manchmal reagiert er gar nicht drauf, manchmal malt er sogar eine Box der falschen Farbe O_o




Nun vermute ich, da mir echt kein besserer Grund mehr einfällt, dass sich die Events "überschneiden".
Also eine Request abgefangen wird und bevor der ganze Code für dieses Event durchgespielt wurde, kommt ein neues Event und sorgt dafür dass der vorherige Durchgang mittendrin abgebrochen wird.
Was zu unberechenbaren Ergebnissen führen würde.

Frage ist nur, wie verhindern?
Im Prinzip will ich dass er für jedes Event den Code bis zum Ende durchspielt.
Mi wäre es am Liebsten wenn er sich merkt was der Reihe nahc kam und, falls er mit Bearbeiten hintendran hängt, wie im Supermarkt trotzdem erst das Event 1 ganz zu Ende macht und dann Event2 verarbeitet usw. Und bei einem neuen Event nicht Alles über den Haufen schmeißt Undecided

Frage ist nur, kann man sowas irgendwie erreichen?


Weil in meinem Fall wird da wie erwähnt ganz am Anfang ein Contentscript auf der Seite eingefügt und diese hat, abgesehen von 2-3 Vairabelinitialisierungen, ansosnten nur einen riesigen Block an Anweisungen mit

Code:
(function(xhr) {
  //Hier Aller Code
})(XMLHttpRequest);

drumherum.

Ich will einerseits nicht dass er wegen eines neuen Events die alte Eventverarbeitung abbricht, andererseits aber auch nicht as er, weil er noch m alten Event arbeitet, das Neue ignoriert.
Sondern eher sich notfalls eine Lsite anlegt mit eingetroffenen Events, die er der Reihe anch verarbeitet, wenn er mit dem Aktuellen fertig ist;
Also nichts verloren geht oder ignoriert wird.

Drucke diesen Beitrag

  Verhalten im Loop
Geschrieben von: GombersJS - 05.10.2022, 10:00 - Forum: Javascript - Antworten (2)

Ich habe bei ioBroker ein Problem eröffnet. Das ist ziemlich länglich geworden - es geht mir im Wesentlichen jetzt um diesen Post.



Code:
var switchStatus, Intervall;
on({id: "shelly.0.SHSW-1#E8DB84D401CC#1.ext.switch1"/*Switch*/, change: "ne"}, async function (obj) {
  var value = obj.state.val;
  var oldValue = obj.oldState.val;
  switchStatus = (obj.state ? obj.state.val : "");
  console.log(('Scriptanfang Status: ' + String(switchStatus)));
  if (switchStatus == true) {
    Intervall = setInterval(async function () {
      console.log(('Loopanfang Status: ' + String(switchStatus)));
      switchStatus = (obj.state ? obj.state.val : "");
    }, 20000);
  } else {
    console.log(('Else Status: ' + String(switchStatus)));
    (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})();
  }
});


Die Variable "switchStatus" wird aus einem Objekt ausgelesen und in der gezeigten "if/then/else" Abfrage ausgewertet.

Im "then"-Zweig wird, wie man sieht, im Loop eine Meldung ausgegeben udn der Wert der Variablen "switchStatus" neu ermittelt. Aber es gibt keine Ende-Bedingung. Meines Erachtens müsste der Loop damit eben endlos laufen. Tatsächlich wird, wenn der "switchStatus" auf false geht, der "else"-Zweig angestoßen. Die Logik verstehe ich nicht, die "if"-Abfrage ist Vergangenheit, wieso weiß "setInterval()" was von dem else-Zweig?


Irgendeine logische Erklärung wäre mir lieb.

Drucke diesen Beitrag

  .txt einlesen und in Liste schreiben
Geschrieben von: prodliluk - 05.10.2022, 02:05 - Forum: Javascript - Antworten (1)


Hallo zusammen! 


Ich übe etwas mit javascript. Für das kleine Programm, an dem ich arbeite, sollte eine .txt-File eingelesen werden und in einer Liste abgespeichert werden. 
Hier mein Versuch: 


Code:
class Champion {
    constructor(champName, currentStatus) {
      this.name = champName;
      this.status = currentStatus;
    }
  }

  change();

  function change(){
    var rawFile = new XMLHttpRequest();
      rawFile.open("GET", "test.txt", true);
      rawFile.onreadystatechange = function() {
        if (rawFile.readyState === 4) {
          var allText = rawFile.responseText;
          document.getElementById("test").innerHTML = allText;
          console.log(allText);
          const champArray = textfile.split('\n');

        var list = [];

        for (let i = 0; i < champArray.length; i++){
            let currentChamp = champArray[i].split(', ');
            const c = new Champion;
            c.champName = currentChamp[0];
            c.currentStatus = currentChamp[1];
            list.push(c);
            console.log(list);
            return allText;
        }
    }
      //console.log(allText);
      rawFile.send();
  }
};
Weiß jemand, wie ich das am besten mache?
Danke im Voraus!  Smile

(Die Datei ist folgendermaßen aufgebaut:
Code:
Name1, 1
Name2, 1
Name3, 0
Name4, 1

Drucke diesen Beitrag