Funktion aufrufen ohne Button

homiys

Mitglied
Hallo in die Runde.
Ich habe ein Java Problem und hoffe auf eure Hilfe. Ich möchte auf einer Website eine Java Funktion aufrufen, ohne das ein Button gedrückt werden muss.
Konkret soll (hier zum testen aus einem Tutorial importiert) eine Stoppuhr mit Hilfe von wechselndem Variableninhalt gestartet und gestoppt werden.

Mit den zusätzlich programmierten Button funktioniert das einwandfrei. Wenn sich aber der Inhalt der Variablen "PiRAM" ändert (passiert über AJAX) soll im wesentlichen die Funktion "start()" aufgerufen werden, also die Stoppuhr gestartet werden. Ich versuche das über ein addEventListener ("change") zu machen, doch wenn sich der Variableninhalt von "PiRAM" ändert, passiert nichts. Zur Kontrolle lasse ich "start()" auch noch einmal in den Bereich "tt" schreiben, aber auch da ändert sich nichts (er bleibt also leer).

Im Internet finde ich haufenweise Anleitungen in Bezug auf den EventListener, die aber alle dann immer auf einen Button oder Focus oder Listenbereich referenzieren. Mit "change" habe ich nichts vergleichbares gefunden.

Ich hoffe, dass mir jemand helfen kann.


Die HTML

HTML:
<!DOCTYPE html>

<html>

<head>



<script src="/static/jquery-1.12.3.min.js" type="text/javascript"></script>

<script src="/static/control.js" type="text/javascript"></script>

<link rel="stylesheet" href="/static/style.css">



</head>

<body>



<br/>

<span id="tt"></span>

<script>

    let za = document.getElementById('PiRAM');

    za.addEventListener ("change", function () {

        document.getElementById('tt').innerText = "start()";

});

</script>

<input type="button" value="RAM" onClick="Send('PiRAM')" />

<span id="PiRAM"></span>

<br/>



<br/>

<div id="zeitanzeige">00:00:000</div>

<div id="button-behaelter">



    <button onClick="start()">Start</button>

    <button onClick="pause()">Pause</button>

    <button onClick="reset()">Reset</button>

</div>



    <script src="/static/stoppuhr.js"></script>

  

<p><div id="Log" style="text-align:left; width:100%;">&nbsp;</div></p>

</body>

</html>


Das Java programm:

Java:
const anzeige = document.getElementById("zeitanzeige");

var gestoppteZeit = 0;
var pausiert = true;
var letzterDurchlauf = new Date();

function start() {
    pausiert = false;
}

function pause() {
    pausiert = true;
}

function reset() {
    pausiert = true;
    gestoppteZeit = 0;
    aktualisiereAnzeige();
}

function aktualisiereZeit() {
    if(pausiert === false) {
        gestoppteZeit += new Date() - letzterDurchlauf;
        aktualisiereAnzeige();
    }

    letzterDurchlauf = new Date();
    setTimeout(aktualisiereZeit, 1);
}

function aktualisiereAnzeige() {
    let millisekunden = gestoppteZeit % 1000;
    let sekunden = Math.floor(gestoppteZeit / 1000) % 60;
    let minuten = Math.floor(gestoppteZeit / 60000) % 60;
    let stunden = Math.floor(gestoppteZeit / 3600000);

    stunden = stunden < 10 ? "0" + stunden : stunden;
    minuten = minuten < 10 ? "0" + minuten : minuten;
    sekunden = sekunden < 10 ? "0" + sekunden : sekunden;
    millisekunden = "000" + millisekunden;
    millisekunden = millisekunden.slice(millisekunden.length - 3);

    anzeige.innerHTML = minuten + ":" + sekunden + ":" + millisekunden;
}

aktualisiereZeit();
 

Oneixee5

Top Contributor
Wenn sich aber der Inhalt der Variablen "PiRAM" ändert (passiert über AJAX) soll im wesentlichen die Funktion "start()" aufgerufen werden,
Die Änderung über Ajax wird in einer Funktion durchgeführt. Es sollte doch möglich sein, in dieser Funktion start() aufzurufen. Ich sehe keine Notwendigkeit für einen Listener oder ähnliches.
 

Oneixee5

Top Contributor
Möglich wäre aber auch:
Java:
document.getElementById("PiRAM").addEventListener("DOMSubtreeModified", (event) => {
    console.log(event)
});
oder:
Javascript:
$("PiRAM").bind("DOMSubtreeModified", () => alert("changed"'"));
Wobei der Einsatz von JQuery heute nicht mehr notwendig ist. Die Version jquery-1.12.3.min.js ist auch schon uralt und gilt nicht mehr als sicher: https://security.snyk.io/package/npm/jquery/1.12.3
 

homiys

Mitglied
Möglich wäre aber auch:
Java:
document.getElementById("PiRAM").addEventListener("DOMSubtreeModified", (event) => {
    console.log(event)
});
oder:
Javascript:
$("PiRAM").bind("DOMSubtreeModified", () => alert("changed"'"));
Wobei der Einsatz von JQuery heute nicht mehr notwendig ist. Die Version jquery-1.12.3.min.js ist auch schon uralt und gilt nicht mehr als sicher: https://security.snyk.io/package/npm/jquery/1.12.3
Hallo Oneixxee5, vielen dank für deine Antwort und deine Zeit. Also gäbe es sogar zwei Möglichkeiten bzw. 3? Wenn ich das Script direkt über Ajax ansteuern könnte, bräuchte ich natürlich nicht den Umweg über eine Variable zu machen. Grundsätzlich wäre das aber auch kein Problem.
Bei deinen 2 vorgeschlagenen Lösungen fehlt mir noch der Bezug auf die Funktionen "start()", "stop()" usw. Wo müsste ich das einbauen?

Und danke für den Tipp mit der jquery. Letzten Endes wird das nur Lokal laufen, insofern mache ich mir da keine Sorgen aber schaden könnte es natürlich auch nicht, eine aktuellere (und sichere) Version zu verwenden. Da hast du natürlich recht.
 

homiys

Mitglied
Javascript:
document.getElementById("PiRAM").addEventListener("DOMSubtreeModified", () => start());
Eine Function stop() sehe ich nicht. Wann soll die denn aufgerufen werden?
Sieh auch hier: https://entwickler.de/javascript/javascript-fur-umsteiger

Sorry, ich meinte natürlich "pause()" und "reset()". Habe den Code eingefügt, leider reagiert das script nicht. Die Stoppuhr startet nicht.
Habe es so in die HTML eingefügt:

HTML:
<br/>
<script>
    document.getElementById("PiRAM").addEventListener("DOMSubtreeModified", () => start());
</script>
<input type="button" value="RAM" onClick="Send('PiRAM')" />
<span id="PiRAM"></span>
 

Oneixee5

Top Contributor
Du musst mit den Grundlagen beginnen. Das Script vor dem Element, das du ansprechen willst, funktioniert natürlich nicht.
 

homiys

Mitglied
Javascript:
document.getElementById("PiRAM").addEventListener("DOMSubtreeModified", () => start());
Eine Function stop() sehe ich nicht. Wann soll die denn aufgerufen werden?
Sieh auch hier: https://entwickler.de/javascript/javascript-fur-umsteiger

Hallo Oneixxee5,
Kommando zurück. Nun startet zwar die Funktion, aber das macht sie, immer bei Aktualisierung nicht bei Änderung. Da der Inhalt der Variablen zyklisch aktualisiert wird, auch wenn diese sich nicht ändert, startet also auch immer die Funktion. Gibt es ein Attribut, dass ich noch mitgeben kann, damit das wirklich nur bei Änderung passiert?
 

Oneixee5

Top Contributor
Sorry, ich meinte natürlich "pause()" und "reset()". Habe den Code eingefügt, leider reagiert das script nicht. Die Stoppuhr startet nicht.
Habe es so in die HTML eingefügt:

<br/>
<script>
document.getElementById("PiRAM").addEventListener("DOMSubtreeModified", () => start());
</script>
<input type="button" value="RAM" onClick="Send('PiRAM')" />
<span id="PiRAM"></span>
Siehe #7
 

homiys

Mitglied
Du kannst dir einfach den alten Wert merken und dann prüfen ob start() ausgeführt werden soll oder nicht.
Nochmals danke für deine Geduld. Ich kenne mich nicht wirklich damit aus. Kannst du mir das bitte einmal zeigen? Ich nehme an, dass ich den Variableninhalt "zwischenspeichern" muss? Wäre wirklich dankbar, wenn du mir die Codezeile einmal posten könntest.
 

Oneixee5

Top Contributor
In dem Beispiel wird immer nur jede neue gerade Zahl in <span id="aenderung">0</span> ausgegeben, obwohl jede gerade zwei mal als Event getriggert wird. Das funktioniert natürlich nicht nur mit Zahlen, sondern auch mit Text. Ich brauchte nur etwas, was sich nachvollziehbar ändert - deshalb Zahlen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Funktion aufrufen Angular, React, JQuery - Fragen zu JavaScript 1
M Funktion in einer Funktion Angular, React, JQuery - Fragen zu JavaScript 1
Lighty Math.pow funktioniert nicht innerhalb Funktion/Schleife Angular, React, JQuery - Fragen zu JavaScript 7
pkm Frage zu Parametern bei der toLocaleString-Funktion von Date Angular, React, JQuery - Fragen zu JavaScript 3
R Wenn-Dann-Funktion in einem Adobe Acrobat Formular Angular, React, JQuery - Fragen zu JavaScript 0
X Mehrfaches Nutzen einer Funktion Angular, React, JQuery - Fragen zu JavaScript 1
Anfänger2011 Ergebnis einer Funktion direkt in Variable speichern Angular, React, JQuery - Fragen zu JavaScript 6
L Wenn Dann Funktion Angular, React, JQuery - Fragen zu JavaScript 13
A Auswahlliste mit Funktion verknüpfen Angular, React, JQuery - Fragen zu JavaScript 13
E Darf anonyme Funktion Parameter haben ? Angular, React, JQuery - Fragen zu JavaScript 4
F JavaScript replace funktion Angular, React, JQuery - Fragen zu JavaScript 1
L Javascript Maus Funktion Angular, React, JQuery - Fragen zu JavaScript 4
Kenan89 JS OO Funktion wird falsch aufgerufen Angular, React, JQuery - Fragen zu JavaScript 2
G Funktion mit Onload vom Body nur einmal ausführen Angular, React, JQuery - Fragen zu JavaScript 9
S Kleine JS-Funktion funktioniert im Firefox nicht wie sie sollte Angular, React, JQuery - Fragen zu JavaScript 9
M Problem mit Java-Funktion Angular, React, JQuery - Fragen zu JavaScript 3
R onload Aufruf einer Funktion in einer Funktion Angular, React, JQuery - Fragen zu JavaScript 2
A Problem mit checkdate-Funktion. Angular, React, JQuery - Fragen zu JavaScript 3
L Funktion und Variablen Angular, React, JQuery - Fragen zu JavaScript 4
G php funktion in java einfügen Angular, React, JQuery - Fragen zu JavaScript 6
C JS funktion funktioniert nicht / wird nicht aufgerufen. Angular, React, JQuery - Fragen zu JavaScript 2
M Funktion "Speichern Unter" abschalten. Angular, React, JQuery - Fragen zu JavaScript 14
T wie kann ich daraus eine Funktion machen? Angular, React, JQuery - Fragen zu JavaScript 2
M Array Rückgabe wert an andere Funktion ? Angular, React, JQuery - Fragen zu JavaScript 2
C Javascript problem links ohne funktion Angular, React, JQuery - Fragen zu JavaScript 12
C JavaScript Menü, Funktion hinzufügen Angular, React, JQuery - Fragen zu JavaScript 5
J Node.js HTTP Server auf VPS Server aufrufen Angular, React, JQuery - Fragen zu JavaScript 7
T Java Script Methode aus anderen JS aufrufen Angular, React, JQuery - Fragen zu JavaScript 1
P Javascript auf Website aufrufen Angular, React, JQuery - Fragen zu JavaScript 5
P mehrere Funktionen in einer aufrufen und onklick zuweisen Angular, React, JQuery - Fragen zu JavaScript 14
H 2 iframe via JavaScript aufrufen Angular, React, JQuery - Fragen zu JavaScript 4
G Java-Klassen aus JavaScript aufrufen Angular, React, JQuery - Fragen zu JavaScript 12
T java methode über "onclick" aufrufen. Angular, React, JQuery - Fragen zu JavaScript 10
M mit javascript java servlet aufrufen. Angular, React, JQuery - Fragen zu JavaScript 13
D Wetter-Widget ohne Location-Abfrage Angular, React, JQuery - Fragen zu JavaScript 10
ruutaiokwu Routing per '/' ohne Raute-Zeichen ("Anchor") und rein clientseitig - wie geht das? Angular, React, JQuery - Fragen zu JavaScript 16
D Variable ohne HTML Tags ausgeben Angular, React, JQuery - Fragen zu JavaScript 14
G Button soll ohne php aktuelle Zeit holen Angular, React, JQuery - Fragen zu JavaScript 2
D Seite ohne Cache laden? Angular, React, JQuery - Fragen zu JavaScript 14
G Java Gallery mit reload ohne iframe Problem Angular, React, JQuery - Fragen zu JavaScript 6
D fullscreen ohne popup Angular, React, JQuery - Fragen zu JavaScript 3
N neues fenster ohne adressleiste Angular, React, JQuery - Fragen zu JavaScript 2

Ähnliche Java Themen

Neue Themen


Oben