 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
21.12.2005, 16:30
|
#1
|
|
TP-Veteran
Registriert seit: Jun 2001
Ort: Wien
|
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"> flowworks.co.at
<input type="checkbox" name="newdomain[]" value="flowworks.info"> 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).
|
|
|
21.12.2005, 16:40
|
#2
|
|
TP-Veteran
Registriert seit: Jun 2001
Ort: Wien
|
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).
|
|
|
21.12.2005, 19:12
|
#3
|
|
TP-Specialist
Registriert seit: Mar 2005
Ort: Unterfranken
|
Die [] brauchst du, wenn das Array von PHP gelesen werden soll.
|
|
|
22.12.2005, 00:26
|
#4
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
|
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!
|
|
|
22.12.2005, 20:11
|
#5
|
|
TP-Specialist
Registriert seit: Mar 2005
Ort: Unterfranken
|
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.
|
|
|
23.12.2005, 02:07
|
#6
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
|
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).
|
|
|
23.12.2005, 11:43
|
#7
|
|
TP-Specialist
Registriert seit: Mar 2005
Ort: Unterfranken
|
Ja, das ist dann ein Hack. Funktioniert bei <input type="checkbox"> einwandfrei, aber was ist mit <select multiple="multiple">?
|
|
|
23.12.2005, 13:41
|
#8
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
|
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!
|
|
|
23.12.2005, 13:54
|
#9
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
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.
|
|
|
23.12.2005, 17:34
|
#10
|
|
TP-Specialist
Registriert seit: Mar 2005
Ort: Unterfranken
|
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. 
|
|
|
24.12.2005, 11:57
|
#11
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
|
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!
|
|
|
24.12.2005, 13:42
|
#12
|
|
TP-Specialist
Registriert seit: Mar 2005
Ort: Unterfranken
|
Naja, ich wusste es noch nicht. Hab nur ein bisschen rumexperimentiert. getElementById('newdomain[]') würde übrigens auch gehen.
|
|
|
24.12.2005, 17:54
|
#13
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
|
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!
|
|
|
17.01.2006, 16:51
|
#14
|
|
TP-Veteran
Registriert seit: Jun 2001
Ort: Wien
|
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.
|
|
|
03.02.2006, 09:42
|
#15
|
|
TP-Veteran
Registriert seit: Jun 2001
Ort: Wien
|
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.
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| 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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 16:55 Uhr.
|
 |