Autor Beitrag
OliverN_26
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 252

Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
BeitragVerfasst: Do 02.08.12 13:52 
Hi

Passt sicher nich in dieses Forum aber wegen der Frage will ich mich nicht in nem neuen anmelden :-)

Ich habe folgende Zeile in Javascript (AJAX):
ausblenden Quelltext
1:
Grid1.getCombo(spalte).put(tmp_id, tmp_name);					


So funktioniert es. Ich müsste das Objekt aber variabel gestalten bekomm es nur einfach nicht hin. Wie geht das in Javascript?
Aussehen sollte es also so:
ausblenden Quelltext
1:
Grid+grid_id.getCombo(spalte).put(tmp_id, tmp_name);					


Geht nur leider nich :-(
1000 Dank im voraus

lg
Oli


Moderiert von user profile iconMartok: Topic aus Sonstiges (Delphi) verschoben am Do 02.08.2012 um 17:31
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Do 02.08.12 14:04 
Also simple Variante wäre ein Array und über den Index identifizierst du die einzelnen Objekte.

ausblenden JavaScript-Quelltext
1:
grid[Index].foo();					


Edit: Ich bin mir grade nicht sicher ob ich deine Frage richtig verstanden habe. Ist "Grid" ein HTML Element?


Zuletzt bearbeitet von thepaine91 am Do 02.08.12 14:41, insgesamt 1-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18762
Erhaltene Danke: 1640

W10 x64 (Chrome, IE11)
Delphi 10.2 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 02.08.12 14:07 
user profile iconOliverN_26 hat folgendes geschrieben Zum zitierten Posting springen:
Passt sicher nich in dieses Forum aber wegen der Frage will ich mich nicht in nem neuen anmelden :-)
In die Entwickler-Ecke passt es schon, nur solltest du es in den JavaScript-Sparten im Webentwicklungsforum posten. :zwinker:
www.entwickler-ecke.de/index.php?c=19

user profile iconOliverN_26 hat folgendes geschrieben Zum zitierten Posting springen:
Aussehen sollte es also so:
ausblenden Quelltext
1:
Grid+grid_id.getCombo(spalte).put(tmp_id, tmp_name);					
Am einfachsten wäre, wenn du jQuery benutzt:
ausblenden JavaScript-Quelltext
1:
$('#Grid' + grid_id)...					
Ansonsten gibt es noch getElementById um die Elemente über die ID zu finden.
OliverN_26 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 252

Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
BeitragVerfasst: Do 02.08.12 14:42 
Hab noch nie was mit JQuery gemacht. Wie würde das denn aussehen? Wenn ich einfach folgendes schreibe passiert nix:
ausblenden JavaScript-Quelltext
1:
$('#Grid'+grid_id+'.getCombo('+spalte+').put('+tmp_id+', '+tmp_name+')');					


Zuletzt bearbeitet von OliverN_26 am Do 02.08.12 15:01, insgesamt 2-mal bearbeitet
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Do 02.08.12 14:52 
So wie es dort steht fehlt eine Klammer. Du kannst eine Variable direkt als Parameter übergeben: getCombo(var);.
Ansonsten kannst du dir über entsprechende Tools solche Fehler auch ausgeben lassen.
OliverN_26 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 252

Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
BeitragVerfasst: Do 02.08.12 15:08 
hmm .. also

1. versteh ich nicht wo da noch eine Klammer fehlen soll (3 auf / 3 zu)
2. hab ich den ganzen Kram mit den Variablen mal weggelassen und da tut sich mit JQuery auch nix. Kann man das denn wirklich einfach so schreiben oder muss das noch ausgelöst werden?
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Do 02.08.12 15:10 
Mein Fehler die Klammer ist an der falschen Stelle.
ausblenden JavaScript-Quelltext
1:
$('#Grid'+grid_id).getCombo(spalte).put(tmp_id, tmp_name);					



Edit: Die Jquery Bibliothek hast du aber eingebunden oder?
OliverN_26 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 252

Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
BeitragVerfasst: Do 02.08.12 15:28 
Nee hatte ich nich :-)
ausblenden JavaScript-Quelltext
1:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>					


Tut sich aber trotzdem nix :-(
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18762
Erhaltene Danke: 1640

W10 x64 (Chrome, IE11)
Delphi 10.2 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 02.08.12 15:33 
Das beste ist, wenn du das im Browser einmal debuggst. Der zeigt dir Fehler an, du kannst Haltepunkte setzen, ... (zumindest in IE, Chrome und Opera, bei FF noch nur mit Addon)

Ansonsten müsstest du schon mehr Quelltext zeigen, sonst lässt sich da nur schwer sagen was da schief geht, am besten ein kleines Beispiel. Ich weiß nicht woher getCombo kommt, aber wenn das eine Methode des Grids ist, dann muss das so aussehen:
ausblenden JavaScript-Quelltext
1:
$('#Grid'+grid_id)[0].getCombo(spalte).put(tmp_id, tmp_name);					
Grund:
Zurück bekommst du erst einmal ein Array, es könnten ja auch mehrere Elemente passen.
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Do 02.08.12 15:56 
Da er hier über eine Id sucht sollte immer nur ein Element zurückkommen.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18762
Erhaltene Danke: 1640

W10 x64 (Chrome, IE11)
Delphi 10.2 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 02.08.12 15:58 
Ich weiß es nicht auswendig, aber ich glaube auch da kam ein Array. Aber das lässt sich am einfachsten eben mit dem Debugger herausfinden. Einfach mal den Ausdruck auswerten und schauen was herauskommt.
OliverN_26 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 252

Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
BeitragVerfasst: Do 02.08.12 16:25 
Hmm .. da tut sich leider nichts.
Hier mal ein wenig Quellcode.
ausblenden JavaScript-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
     var Grid1 = Tabbar.cells("t1").attachGrid();
     Grid1.setImagePath();
     Grid1.setHeader();
     Grid1.setInitWidths();
     Grid1.setColAlign();
     Grid1.setColTypes();
     Grid1.setColSorting();
     Grid1.enableTooltips();
     Grid1.enableRowsHover();     
     ComboBox_laden('55','1','select','6'); // hier wo die 1 steht übergeb ich die ID des Grids (Grid1/Grid2)


Es handelt sich hier um eine fertige GRID-Komponente. Ich hab halt eine eigene Methode geschrieben um ComboBoxen innerhalb des Grids zu schalten. Da es aber sein kann das ich mehrere Grids lade muss ich irgendwie sagen welches Grid ich ansprechen will.
so läufts:
ausblenden JavaScript-Quelltext
1:
2:
Grid1.getCombo(spalte).put(tmp_id, tmp_name);
Grid2.getCombo(spalte).put(tmp_id, tmp_name);

aber es muss doch gehen das ich den Objekt-Namen am Anfang variabel gestalten kann ?!

Ich hab mal was über "eval" in Javascript gelesen. Könnte ich damit was anfangen?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18762
Erhaltene Danke: 1640

W10 x64 (Chrome, IE11)
Delphi 10.2 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 02.08.12 17:32 
Wenn du die selber erzeugst als Variablen, ist das ja gar keine ID. Dann speichere das doch einfach in ein Array statt in einzelne Variablen. ;-)
ausblenden JavaScript-Quelltext
1:
2:
3:
Grids = new Array();
Grids[1] = Tabbar.cells("t1").attachGrid();
...
Dann hast du ein Array und kannst da direkt über den Index drauf zugreifen.
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Do 02.08.12 18:08 
Also eine ganze Diskussion um nichts, da der erste Beitrag schon die Antwort geliefert hat. :roll: Beim nächsten mal am besten gleich ein wenig Quelltext dazu. :zustimm:
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3657
Erhaltene Danke: 600

Win XP x86, Win 8.1 x64
Lazarus Snapshot; Delphi 7,2007,XE; PHP (PHPEdit,PhpStorm); JS; Java(Eclipse)
BeitragVerfasst: Fr 03.08.12 01:17 
Ich hab jetzt die Diskussion nicht weiter verfolgt, aber eins muss ich kurz dazwischenrufen:

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden JavaScript-Quelltext
1:
Grids = new Array();					


Das ist schlechter Stil, besser wäre Grids = []; oder var Grids = [];, je nachdem ob du wirklich eine globale Variable deklarieren willst oder nicht. new sollte man aber in keinem Fall auf primitive Typen (Object, Array, Number, String, Boolean) anwenden, das kann ggf. in die Hose gehen (auf Function auch nicht, das ist nämlich ein getarntes eval()). Begründung kann man bei Crockford nachlesen, hauptsächlich ist das ein "may not do what you think it does".

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
OliverN_26 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 252

Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
BeitragVerfasst: Fr 03.08.12 11:03 
Vielen Dank für eure Tips und sorry das ich mich am Anfang nicht richtig ausgedrückt habe. Hat alles geholfen und ich habs hinbekommen. Danke :-)