Object-Übergabe bei onclick-function bzw. innerhalb einer "Warte-Schleife"
Romero
- javascript
Hallöchen lieben Gemeinde,
ich steh erneut vor einem, für mich, unlösbarem Problem.
Ich möchte gern ein Excel-Objekt in meiner "Warte-Schleife" übergeben. Das einzige was er mir ausgibt, ist, da ein Objekt erforderlich ist.
Hier aber erstmal der Code:
document.getElementById("Fehlerausgabe").innerHTML = '<input type="button" id="weiter_klicker" value="Weiter" style="width:80px" class="STL_Meldungen_Button">';
var t = currentRange.Rows.Count;
schleife_starten(t);
function weiter(t)
{
for( y = 1; y < t; y++ ) { alert(currentRange.Cells( y, Auslesespalte_MSN ).Text); };
//=> hier wird der Fehler Objekt erforderlich angezeigt: currentRange
};
function schleife_starten(t)
{
document.getElementById( "weiter_klicker" ).onclick = function() {
var tt = weiter(t)
};
};
Die "Warte-Schleife" soll dazu dienen, dass erst eine Anzeige erfolgen soll, sobald ich diesen Button geklickt habe. Bis zu dem Zeitpunkt des Klickens soll er einfach nur "warten". Könnt ihr mir da den Fehler aufzeigen?
LG Romero
Tach!
Die Funktion "weiter()" gibt nichts zurück. Dieses Nichts nimmst du in tt entgegen, um dann nichts mit ihm anzufangen. Diese Zuweisung kannst du weglassen. Zudem sind t und tt keine gescheiten Variablenbezeichner, aus denen man sich als Außenstehender (zu denen auch du drei Wochen nach Projektabschluss gehören wirst) die Intention herleiten kann.
//=> hier wird der Fehler Objekt erforderlich angezeigt: currentRange
Existiert denn currentRange zu dem Zeitpunkt noch? Beachte, dass dein Code nicht von oben nach unten ausgeführt wird, sondern so wie der Programmablauf in der Gegend rumspringt, zuzüglich der Events, die kreuz und quer auftreten und Code ausführen können.
Verwende außerdem console.log() statt alert(), das gibt dir genauere Auskunft zu den befragten Ausdrücken. Die Konsole hat man ja sowieso offen, um Fehlermeldungen zu sehen.
dedlfix.
hy!
Tach!
Die Funktion "weiter()" gibt nichts zurück. Dieses Nichts nimmst du in tt entgegen, um dann nichts mit ihm anzufangen. Diese Zuweisung kannst du weglassen. Zudem sind t und tt keine gescheiten Variablenbezeichner, aus denen man sich als Außenstehender (zu denen auch du drei Wochen nach Projektabschluss gehören wirst) die Intention herleiten kann.
Da hast du natürlich Recht. Es wird nix zurückgegeben. Aber das spielt zu diesem Zeitpunkt (noch) keine Rolle. Die Bezeichnungen dienten lediglich nur zu testzwecken, genauere Bezeichnungen erfolgt nach erfolgreicher Übergabe diverser Variablen.
Existiert denn currentRange zu dem Zeitpunkt noch? Beachte, dass dein Code nicht von oben nach unten ausgeführt wird, sondern so wie der Programmablauf in der Gegend rumspringt, zuzüglich der Events, die kreuz und quer auftreten und Code ausführen können.
Naja, genau da ist das Problem. In der function schleife_starten(), bevor ich den Button anklicke, und somit die Funktion weiter() auslöse, gibt mir z.B. alert(currentRange.Rows.Count) die Anzahl der Zeilen in meiner Excel-Tabelle wieder (anhand des Excel-Objektes currentRange). Nur nach dem anklicken (und somit das Auslösen der Funktion weiter()), ist kein Objekt beim Übertragen, mehr vorhanden.
Verwende außerdem console.log() statt alert(), das gibt dir genauere Auskunft zu den befragten Ausdrücken. Die Konsole hat man ja sowieso offen, um Fehlermeldungen zu sehen.
Da muss ich dazu sagen, dass ich in einer HTA-Datei schreibe, welche auf dem IE bassiert.
LG Romero
Tach!
Existiert denn currentRange zu dem Zeitpunkt noch? Beachte, dass dein Code nicht von oben nach unten ausgeführt wird, sondern so wie der Programmablauf in der Gegend rumspringt, zuzüglich der Events, die kreuz und quer auftreten und Code ausführen können.
Naja, genau da ist das Problem. In der function schleife_starten(), bevor ich den Button anklicke, und somit die Funktion weiter() auslöse, gibt mir z.B. alert(currentRange.Rows.Count) die Anzahl der Zeilen in meiner Excel-Tabelle wieder (anhand des Excel-Objektes currentRange). Nur nach dem anklicken (und somit das Auslösen der Funktion weiter()), ist kein Objekt beim Übertragen, mehr vorhanden.
Dann macht irgendwelcher nicht gezeigter Code irgendetwas mit dem currentRange, vermute ich mal stark. Vielleicht sind auch die Scopes anders als du zeigst. Ich kann nur vermuten, dass currentRange im globalen Scope liegt (sprich, eine Eigenschaft von windows ist (oder was auch immer der Ersatz dafür in HTA ist)) und in dem Fall müsste er in der Funtion zu sehen sein.
dedlfix.
Hy.
Dann macht irgendwelcher nicht gezeigter Code irgendetwas mit dem currentRange, vermute ich mal stark. Vielleicht sind auch die Scopes anders als du zeigst. Ich kann nur vermuten, dass currentRange im globalen Scope liegt (sprich, eine Eigenschaft von windows ist (oder was auch immer der Ersatz dafür in HTA ist)) und in dem Fall müsste er in der Funtion zu sehen sein.
Ok ich werd mal versuchen, diese Variable umzubenennen. Sollte da immer noch ein Fehler vorliegen, werde ich mich umgehend diesbezüglich hier wieder melden. Wenn nicht, lag es daran und bedanke mich schonmal vorab für diesen, simplen, Hinweiß.
LG Romero
Hallo an Euch,
ich bräuchte zu den "Warte-Schleifen" nochmal explizite Hilfe. Ich habe mir im Forum meine eigenen älteren Posts oder die von anderen zu diesem Problem nochmal durchgelesen, aber irgendwie habe ich da noch Verständnisprobleme. Ich hoffe ihr könnt mir da noch einmal helfen.
Mein Problem ist da wie folgt:
Ich möchte eine sogenannte Warte-Schleife erstellen, welche das Programm stoppt, der User Daten erstellen lässt, bei richtiger Einstellung dann aber an der Stelle weiterläuft.
Wie sollte es ungefähr aussehen:
Ich habe eine ausgegliederte separate *.JS-Datei. Diese soll an einer bestimmten Stelle aufgerufen werden. In dieser JS-Datei soll der User bestimmte Daten auswählen und diese mit einem "Start"-Button bestätigen. Diese gewonnenen Daten sollen zurückgeführt werden, an der Stelle, wo diese JS-Datei bzw. diese Funktion aufgerufen wurde. Denn mit diesen neugewonnenen Daten soll weiter gearbeitet werden.
Bisher habe ich folgendes (aus älteren Posts) zusammengestellt:
... vorheriger Code
schleife_start()
function schleife()
{
//Schleifenanweisung bzw. Aufruf der ausgegliederten separaten JS-Datei
var rückgabewerte = separate_JS_Datei()
return rückgabewerte;
};
function weiter()
{
window.setTimeout(schleife, 0);
};
function schleife_start()
{
weiter();
schleife();
};
... nachfolgender Code (mit aus oben gewonnenen Daten)
Das ist der grobe Aufbau meines "Warte-Schleife"-Konstruktes. Doch an welcher Stelle kann ich eine If-Abfrage einstellen, wo er bei Erfüllung dann die Daten weiter verarbeitet? Und wo an welcher Stelle bleibt die Schleife "so lange stehen", bis ich ihm sage, weiter gehts?
Oder muss ich das ganze Konstrukt komplett überarbeiten?
Ich hoffe, ihr könnt mir da nochmal helfen. Und ich hoffe, dass ich es diesmal richtig verstehen werde.
LG Romero
@@Romero
Ich möchte eine sogenannte Warte-Schleife erstellen, welche das Programm stoppt, der User Daten erstellen lässt, bei richtiger Einstellung dann aber an der Stelle weiterläuft.
Nein. Du möchtest keine Warteschleifen, sondern eine Event-Verarbeitung, und zwar eine moderne.
LLAP 🖖