Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]12064[/thread]

Frage zu Javascript

Leser: 2


<< |< 1 2 >| >> 11 Einträge, 2 Seiten
GwenDragon
 2008-06-23 19:25
#110730 #110730
User since
2005-01-17
14761 Artikel
Admin1
[Homepage]
user image
Hättste mal genauer erklärt, leiber renee. ;)

jQuery? Was für ein Overkill!

obj ist doch ein assoziatives Array (also hash wie in Perl).
Wie Struppi schon schreibt: obj[e_value] = e_value;
renee
 2008-06-23 19:31
#110741 #110741
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
GwenDragon+2008-06-23 17:25:05--
Hättste mal genauer erklärt, leiber renee. ;)
Ich weiß ;-)
Quote
jQuery? Was für ein Overkill!
Ich nutze jQuery noch für einige andere Sachen bei der Anwendung, so dass das schon passt.

Quote
obj ist doch ein assoziatives Array (also hash wie in Perl).
Wie Struppi schon schreibt: obj[e_value] = e_value;
jupp, danke. Manchmal sieht man den Wald vor lauter Bäumen nicht ;-)

Ein $obj{$e_name} = $e_value wollte einfach nicht funktionieren *fg*

Naja, auf jeden Fall funktioniert es jetzt...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2008-06-23 16:55
#111369 #111369
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Mir fällt leider kein gescheiter Betreff ein...

Ich habe ein Formular, dessen Felder ich dynamisch abarbeiten will. Angenommen ich habe die Felder "titel","vorname","nachname". Was muss ich denn bei "???" einsetzen, damit am Schluss "obj" so aussieht:

Code: (dl )
1
2
3
4
5
{
titel: wert_in_titel,
vorname: wert_in_vorname,
nachname: wert_in_nachname
}


Code: (dl )
1
2
3
4
5
6
7
8
      var obj = {};

for( var i = 0; i < elem_form.elements.length; i++ ){
var elem = elem_form.elements[i];
var e_name = elem.name || "";
var e_value = elem.value;
???
}


Mit eval oder ähnlichem bin ich nicht weitergekommen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
GwenDragon
 2008-06-23 17:03
#111371 #111371
User since
2005-01-17
14761 Artikel
Admin1
[Homepage]
user image
Deine Fareg ist für mich etwas unverständlich.
Du willst die Elemente eines Formulars auslesen und dann in obj speichern?
renee
 2008-06-23 17:06
#111372 #111372
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ja, habe es jetzt mit Unterstützung von eval und jQuery doch noch hinbekommen...

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
      var obj = {};

for( var i = 0; i < elem_form.elements.length; i++ ){
var elem = elem_form.elements[i];
var e_name = elem.name || "";
var e_value = elem.value;
if(e_name == ""){
continue;
}
eval("obj = $.extend({ " + elem.name + ": e_value }, obj)");

}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Struppi
 2008-06-23 18:48
#111386 #111386
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Das geht einfacher:
Code: (dl )
1
2
3
4
5
6
7
8
9
var obj = {};

for( var i = 0; i < elem_form.elements.length; i++ ){
var elem = elem_form.elements[i];
var e_name = elem.name || "";
var e_value = elem.value;
if(e_name == "") continue;
obj[e_value] = e_value;
}
Struppi
 2008-06-23 19:42
#111387 #111387
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
GwenDragon+2008-06-23 17:25:05--
obj ist doch ein assoziatives Array (also hash wie in Perl).
Wie Struppi schon schreibt: obj[e_value] = e_value;
den Begriff assoziatives Array halte ich für falsch bzw. zumindet für verwirrend, es ist ein Objekt, das ansonsten keinerlei Array Funktionaliät hat. Es läßt sich aber als Hashtable gebrauchen (Anfänger stolpern immer wieder darüber, das length nicht gesetzt ist, wenn sie ein echtes Array als Objekt mißbrauchen) wobei aber selbst ein Perl Hash mehr funktionalität hat als ein JS Objekt.
Gast Gast
 2008-06-24 13:15
#111408 #111408
Struppi+2008-06-23 17:42:50--
GwenDragon+2008-06-23 17:25:05--
obj ist doch ein assoziatives Array (also hash wie in Perl).
Wie Struppi schon schreibt: obj[e_value] = e_value;
den Begriff assoziatives Array halte ich für falsch bzw. zumindet für verwirrend

Wie nennt man das dann richtig?
Struppi
 2008-06-24 18:03
#111442 #111442
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Es ist einfach ein Objekt oder erkennst du irgendeine Array Funktionalität?
(abgesehen davon, dass in JS mit dem Indexoperator auf die Schlüssel zugegriffen werden kann)
KurtZ
 2008-06-24 19:42
#111454 #111454
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
Struppi+2008-06-24 16:03:16--
Es ist einfach ein Objekt oder erkennst du irgendeine Array Funktionalität?
(abgesehen davon, dass in JS mit dem Indexoperator auf die Schlüssel zugegriffen werden kann)


Leider ist "assoziatives Array" der meistverwendete Begriff für Hashes, während man für nummerisch indizierte Arrays einfach nur "Arrays" sagt.

Intern sind alle Objekte in JS de facto "erbende" Hashes [1], große Vorsicht ist deswegen geboten wenn Object.prototype manipuliert wird und man mit "for in" arbeitet. So kann man sich sogar seine Array-Objekte versauen. [2]

sie auch ->
http://forum.de.selfhtml.org/archiv/2008/4/t169127/#m1104262

EDIT:
[1] mit einigen vorbelegten Keys
[2] weil in JS auch das "Array" Objekt die nummerische Indizes letztendlich als Hashkeys implementiert.
TMTOWTDYOG (there's more than one way to dig your own grave)
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2008-06-23 16:55.