Entwickler-Ecke

Programmiersprachen (Client) - Frage bezüglich JavaScript ?!


OliverN_26 - Do 02.08.12 14:52
Titel: Frage bezüglich JavaScript ?!
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):

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:

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 - Do 02.08.12 15:04

Also simple Variante wäre ein Array und über den Index identifizierst du die einzelnen Objekte.


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?


jaenicke - Do 02.08.12 15: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:
http://www.entwickler-ecke.de/index.php?c=19

user profile iconOliverN_26 hat folgendes geschrieben Zum zitierten Posting springen:
Aussehen sollte es also so:

Quelltext
1:
Grid+grid_id.getCombo(spalte).put(tmp_id, tmp_name);                    
Am einfachsten wäre, wenn du jQuery benutzt:

JavaScript-Quelltext
1:
$('#Grid' + grid_id)...                    
Ansonsten gibt es noch getElementById um die Elemente über die ID zu finden.


OliverN_26 - Do 02.08.12 15:42

Hab noch nie was mit JQuery gemacht. Wie würde das denn aussehen? Wenn ich einfach folgendes schreibe passiert nix:

JavaScript-Quelltext
1:
$('#Grid'+grid_id+'.getCombo('+spalte+').put('+tmp_id+', '+tmp_name+')');                    


thepaine91 - Do 02.08.12 15: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 - Do 02.08.12 16: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 - Do 02.08.12 16:10

Mein Fehler die Klammer ist an der falschen Stelle.

JavaScript-Quelltext
1:
$('#Grid'+grid_id).getCombo(spalte).put(tmp_id, tmp_name);                    



Edit: Die Jquery Bibliothek hast du aber eingebunden oder?


OliverN_26 - Do 02.08.12 16:28

Nee hatte ich nich :-)

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 - Do 02.08.12 16: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:

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 - Do 02.08.12 16:56

Da er hier über eine Id sucht sollte immer nur ein Element zurückkommen.


jaenicke - Do 02.08.12 16: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 - Do 02.08.12 17:25

Hmm .. da tut sich leider nichts.
Hier mal ein wenig Quellcode.

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:

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 - Do 02.08.12 18: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. ;-)

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 - Do 02.08.12 19: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 - Fr 03.08.12 02: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:

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".


OliverN_26 - Fr 03.08.12 12: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 :-)