Fahrtenbuch genial!
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 21.12.2005, 16:30   #1
TP-Veteran
 
Benutzerbild von Flow09
 
Registriert seit: Jun 2001
Ort: Wien
Flow09 ist auf einem guten Weg

Array in Javascript abfragen


Hey,

ich hab hier ein HTML-Formular in dem mehrere Checkbox enthalten sind welche immer den gleichen Namen haben:

HTML-Code:
<input type="checkbox" name="newdomain[]" value="flowworks.co.at">&nbsp;flowworks.co.at
<input type="checkbox" name="newdomain[]" value="flowworks.info">&nbsp;flowworks.info
...
Jetzt möchte ich per Javascript zählen wieviele Werte diese Array enthält und schauen ob eine der checkboxen angeklickt wurde.

Leider habe ich Probnleme per Javascript auf das Array zuzugreifen. Ich bekomm immer die Meldung "document.forms[0].newdomain has no properties".

Ich hab dann versucht mit einem Script ,welches mir nightline für das prüfen von Radio-Buttons gegeben hat, das zu erreichen was ich will, leider klappt das aber auch nicht so wie ich mir das vorstelle! Hier mal das Script:

Code:
var checkbox = document.forms[0].newdomain;
	var check = false;

	for (i in checkbox) {
	if (checkbox[i].checked) {
	check = true;
	alert(checkbox[i].value);
	//document.forms[0].submit();
	}
	}
	if (check == false)
	alert ('Bitte wählen Sie ein Produkt aus!');
Leider wird nie erkannt das ich eine checkbox angeklickt habe, bei den Radio-Buttons funktioniert es wunderbar!

Könnt ihr mir bitte helfen!

lg
Flo
__________________
Lesser known Programming Languages #13: SLOBOL
... Although many compilers allow you to take a coffee break while they compile, SLOBOL compilers allow you to travel to Bolivia to pick the coffee. Forty-three programmers are known to have died of boredom sitting at their terminals while waiting for a SLOBOL program to compile. Weary SLOBOL programmers often turn to a related (but infinitely faster) language, COCAINE.

Geändert von Flow09 (21.12.2005 um 16:37 Uhr).
Flow09 ist offline   Mit Zitat antworten


Alt 21.12.2005, 16:40   #2
TP-Veteran
 
Benutzerbild von Flow09
 
Registriert seit: Jun 2001
Ort: Wien
Flow09 ist auf einem guten Weg
Das Script funktioniert doch! Ich hab jetzt nur ein Problem mit den Namen von den Checkboxen, solang ich kein [] an den Namen hänge funktioniert es, wenn ich die Klammern einfüge spricht die Javascript-Konsole das der Funktionsname den ich dem ganzen gegeben habe nicht definiert ist!
__________________
Lesser known Programming Languages #13: SLOBOL
... Although many compilers allow you to take a coffee break while they compile, SLOBOL compilers allow you to travel to Bolivia to pick the coffee. Forty-three programmers are known to have died of boredom sitting at their terminals while waiting for a SLOBOL program to compile. Weary SLOBOL programmers often turn to a related (but infinitely faster) language, COCAINE.

Geändert von Flow09 (21.12.2005 um 16:47 Uhr).
Flow09 ist offline   Mit Zitat antworten
Alt 21.12.2005, 19:12   #3
TP-Specialist
 
Benutzerbild von rewboss
 
Registriert seit: Mar 2005
Ort: Unterfranken
rewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKE
Die [] brauchst du, wenn das Array von PHP gelesen werden soll.
rewboss ist offline   Mit Zitat antworten
Alt 22.12.2005, 00:26   #4
321
TP-Specialist
 
Benutzerbild von 321
 
Registriert seit: Nov 2004
Ort: Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
321 hilft, wo's geht321 hilft, wo's geht321 hilft, wo's geht
In PHP kann man auch $_POST[] durchsuchen und mit Form-Feldnamen ohne [] ein weiteres Array aufbauen. Dadurch sollte dann JS wieder funktionieren.
__________________
[321 Name="Joe"]
wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
[/321]


use my HTML-Tester

Motto'06: Mut zur deutschen Sprache!
321 ist offline   Mit Zitat antworten
Alt 22.12.2005, 20:11   #5
TP-Specialist
 
Benutzerbild von rewboss
 
Registriert seit: Mar 2005
Ort: Unterfranken
rewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKE
Zitat:
Zitat von 321
In PHP kann man auch $_POST[] durchsuchen und mit Form-Feldnamen ohne [] ein weiteres Array aufbauen. Dadurch sollte dann JS wieder funktionieren.
Das ist nicht das Problem hier, aber nein, was du sagst stimmt nicht. So wird immer nur einen Wert von dem Array übertragen, und zwar den Wert des Elements, das am spätesten im HTML-Code erscheint und ausgewählt wurde.
rewboss ist offline   Mit Zitat antworten
Alt 23.12.2005, 02:07   #6
321
TP-Specialist
 
Benutzerbild von 321
 
Registriert seit: Nov 2004
Ort: Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
321 hilft, wo's geht321 hilft, wo's geht321 hilft, wo's geht
Es ist dohc das Problem, dass die Schreibweise eine Bearbeitung durch JS ausschliesst und andererseits für PHP von Nutzen ist.

Ohne [] meine ich zB. so:
name="newdomain01"
name="newdomain02"
name="newdomain03"
name="newdomain04"
Die Name lassen sich dann mit substring erkennen und zuordnen
etwa so:
PHP-Code:
$i 0;
while(list(
$FeldName,$value) = each($_POST)) {
    if (
substr($FeldName,1,9) == 'newdomain') {
             
i++; // und value in ein entspr. array laden    
             
}

__________________
[321 Name="Joe"]
wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
[/321]


use my HTML-Tester

Motto'06: Mut zur deutschen Sprache!

Geändert von 321 (23.12.2005 um 02:12 Uhr).
321 ist offline   Mit Zitat antworten
Alt 23.12.2005, 11:43   #7
TP-Specialist
 
Benutzerbild von rewboss
 
Registriert seit: Mar 2005
Ort: Unterfranken
rewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKE
Ja, das ist dann ein Hack. Funktioniert bei <input type="checkbox"> einwandfrei, aber was ist mit <select multiple="multiple">?
rewboss ist offline   Mit Zitat antworten
Alt 23.12.2005, 13:41   #8
321
TP-Specialist
 
Benutzerbild von 321
 
Registriert seit: Nov 2004
Ort: Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
321 hilft, wo's geht321 hilft, wo's geht321 hilft, wo's geht
mE. Kein Problem, da Du dieses im HTML nicht als Array zu definieren hast,
es wird in PHP als Array erkannt, resp. als solches an PHP abgeschickt.

Als Hack würde ich mein Vorgehen nicht sehen, es sind alles offizielle Befehle.
__________________
[321 Name="Joe"]
wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
[/321]


use my HTML-Tester

Motto'06: Mut zur deutschen Sprache!
321 ist offline   Mit Zitat antworten
Alt 23.12.2005, 13:54   #9
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
m.E. braucht es keinen Hack. JS kann Array-Variablen genauso ansprechen, wenns nicht funktioniert, liegt es i.d.R. am falschen Syntax - hier kommt die schlechtere Debug-Möglichkeit zum tragen.
Ich benutze viele JS-Auswertungen, in denen Arrayvariablen genutzt werden.
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 23.12.2005, 17:34   #10
TP-Specialist
 
Benutzerbild von rewboss
 
Registriert seit: Mar 2005
Ort: Unterfranken
rewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKE
Zitat:
Zitat von 321
mE. Kein Problem, da Du dieses im HTML nicht als Array zu definieren hast,
es wird in PHP als Array erkannt, resp. als solches an PHP abgeschickt.
Nein, das stimmt ganz einfach nicht. Probier's doch aus:

PHP-Code:
<?php

if(isset($_POST['sent'])){
 print(
"<ul>\n");

 foreach(
$_POST as $key => $value) print("<li>$key = $value</li>\n");

 print(
"</ul>");
}

?>

<form action="<?=$_SERVER['PHP_SELF']?>" method="post">

<input type="hidden" name="sent" value="yes" />

<select multiple="multiple" name="selectelement">
<option value="0">The zeroth option</option>
<option value="1">The first option</option>
<option value="2">The second option</option>
<option value="3">The third option</option>
<option value="4">The fourth option</option>
</select><br />

<input type="submit" value="Go!" />

</form>
Egal, wie viele du auswählst, wird immer nur einen Wert übermittelt. Erst, wenn du den Namen in "selectedelement[]" änderst, kriegst du als Ergebnis "selectedelement = Array".

Was ich aber gerade herausgefunden habe: JavaScript kann doch mit Namen wie "selectedelement[]" umgehen, und zwar so:

Code:
document.forms[0]['selectedelement[]']
Das ist möglich, weil im JavaScript Objekte assoziative Arrays sind und umgekehrt -- es ist also Wurst, ob du z.B. location.href oder location['href'] schreibst.

So ist also die Lösung von Flows Problem denkbar einfach: die Zeile

Code:
var checkbox = document.forms[0].newdomain;
ändern in:

Code:
var checkbox = document.forms[0]['newdomain[]']
So funktioniert jetzt nicht nur JavaScript, sondern auch PHP -- und dein Hack können wir auch umgehen.
rewboss ist offline   Mit Zitat antworten
Alt 24.12.2005, 11:57   #11
321
TP-Specialist
 
Benutzerbild von 321
 
Registriert seit: Nov 2004
Ort: Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
321 hilft, wo's geht321 hilft, wo's geht321 hilft, wo's geht
Ja gut!
Vorsichtigerweise schrieb ich ja: mE.

Warum sagtest es nicht gleich, wenn es schon wusstest *tadel*
__________________
[321 Name="Joe"]
wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
[/321]


use my HTML-Tester

Motto'06: Mut zur deutschen Sprache!
321 ist offline   Mit Zitat antworten
Alt 24.12.2005, 13:42   #12
TP-Specialist
 
Benutzerbild von rewboss
 
Registriert seit: Mar 2005
Ort: Unterfranken
rewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKE
Naja, ich wusste es noch nicht. Hab nur ein bisschen rumexperimentiert. getElementById('newdomain[]') würde übrigens auch gehen.
rewboss ist offline   Mit Zitat antworten
Alt 24.12.2005, 17:54   #13
321
TP-Specialist
 
Benutzerbild von 321
 
Registriert seit: Nov 2004
Ort: Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
321 hilft, wo's geht321 hilft, wo's geht321 hilft, wo's geht
Merry Christmas!
__________________
[321 Name="Joe"]
wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
[/321]


use my HTML-Tester

Motto'06: Mut zur deutschen Sprache!
321 ist offline   Mit Zitat antworten
Alt 17.01.2006, 16:51   #14
TP-Veteran
 
Benutzerbild von Flow09
 
Registriert seit: Jun 2001
Ort: Wien
Flow09 ist auf einem guten Weg
Spät kommt die Antwort, aber sie kommt!

Ich hab das Thema jetzt wieder aufgegriffen und bis jetzt scheint es mit der Lösung von rewboss zu klappen!

Ich danke euch für die Hilfe, ich melde mich falls ich doch noch Probleme bekomme!

lg
Flow
__________________
Lesser known Programming Languages #13: SLOBOL
... Although many compilers allow you to take a coffee break while they compile, SLOBOL compilers allow you to travel to Bolivia to pick the coffee. Forty-three programmers are known to have died of boredom sitting at their terminals while waiting for a SLOBOL program to compile. Weary SLOBOL programmers often turn to a related (but infinitely faster) language, COCAINE.
Flow09 ist offline   Mit Zitat antworten
Alt 03.02.2006, 09:42   #15
TP-Veteran
 
Benutzerbild von Flow09
 
Registriert seit: Jun 2001
Ort: Wien
Flow09 ist auf einem guten Weg
Hey,

jetzt hab ich doch nochmal Probleme mit dem Script:

Code:
function checkTheBox()
{
	var checkbox1 = document.forms[0]['newdomain[]'];
	var checkbox2 = document.forms[0]['olddomain[]'];
	var check = false;

	for (i in checkbox1) 
	{
		if (checkbox1[i].checked) 
		{
			check = true;
		}
	}
	
	for (i in checkbox2)
	{
		if(checkbox2[i].checked)
		{
			check = true;
		}
	}
	
	if (check == false)
	{
		alert ('Bitte wählen Sie mind. eine Domain aus!');
	}
	else
	{
		document.forms[0].submit();
	}
}
Im Firefox funktioniert es zwar perfekt aber der IE streikt, egal wieviele checkboxen ich auswähle er erkennt es nicht und gibt immer die alert-Meldung aus statt das Formular abusenden.

Könnte ihr mir bitte nochmal helfen!!

lg
Flow
__________________
Lesser known Programming Languages #13: SLOBOL
... Although many compilers allow you to take a coffee break while they compile, SLOBOL compilers allow you to travel to Bolivia to pick the coffee. Forty-three programmers are known to have died of boredom sitting at their terminals while waiting for a SLOBOL program to compile. Weary SLOBOL programmers often turn to a related (but infinitely faster) language, COCAINE.
Flow09 ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > HTML Puristen > Javascript
Array in Javascript abfragen Array in Javascript abfragen
« Radio-Buttons automatisch 'checken' lassen... | Element im Formular mittels zusammengesetzem Namen ansprechen »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:55 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50