Sie sind hier:  Home > Forum
 
Zurück   dsl-user.de Board - DSL - Hilfe - DSL einrichten > Computer und WWW > Für Webmaster
Benutzername
Kennwort

Für Webmaster Alles was mit dem Erstellen zu tun hat, HTML, XML, PHP, Webspace

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 26.05.2005, 17:14
DSL-Sauger
Gast
 
Beiträge: n/a
Question JS - Werte übergeben

Hallo,

ich sitze gerade an einem JS. Und zwar soll ich ein Quiz erstellen.

Fragen etc. habe ich schon. Jedoch möchte ich dass sich die Fragen auf mehreren Seiten erstreckt damit sich nicht alles auf einer Seite befindet und man bis ins Nirvana scrollen kannn.

Meine Frage ist nun, wie kann ich z.B. die Variable " Punkte " mit dem ermittelten Wert " 5 " an eine weiteren Script, der sich auf einer neuen HTML Seite befindet, weiterleiten?

Ich möchte ein Punktesystem einbauen, dass wenn man alle Fragen abgearbeitet sind, der Auswetungsscript geöffnet wird und sämtliche Punkte addiert werden. Wenn sich alles auf einer Seite befindet ist das ja einfach. Aber wie kann ich, wie schon oben gefragt, die Werte weitergeben oder weiterleiten???


Mit freundlichen Grüßen

Sauger
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 26.05.2005, 17:32
Benutzerbild von Quidoff
wie auch immer
 
Registriert seit: 03.04.2004
Ort: Jossgrund
Alter: 23
Beiträge: 1.016
Du kannst ja wenn du ein Forumlar hast die Werte per GET oder POST weiterleiten. Ich weiß nur nicht wie du diese Werte dann mit JS auf der nächsten Seite auslesen kannst. Also POST dürfte nicht gehen, da POST ja auf dem Server ausgeführt wird und z.B. mit PHP abgefangen werden kann. (So würde ich es übrigens machen, aber wenn du es mit JS machen musst, dann musst du dich wohl mit GET zufrieden geben.) Aber JS ist ja eine Sprache, die auf deinem Rechner ausgeführt wird und nicht auf einem Server. In der SelfHTML hab ich auf die schnelle nichts gefunden. Werde erstmal ein bisschen googeln.

Mfg
KoЯn
Mit Zitat antworten
  #3 (permalink)  
Alt 26.05.2005, 17:33
DrWhiteLetter
Gast
 
Beiträge: n/a
Hab von JS eigentlich garkeine Ahnung, aber du könntest die Daten möglicherweise an die URL anhängen und dann von der nächsten Seite abrufen lassen.
Ansonsten wäre ich wohl eine Serverseitige Sprache die besssere Wahl.
Mit Zitat antworten
  #4 (permalink)  
Alt 26.05.2005, 17:36
DSL-Sauger
Gast
 
Beiträge: n/a
Halllo und Danke schonmal, Quidoff!

Also ich hab ja schonmal bei "js-welt" nachgefragt und dort meinten die auch, dass man das irgendwie mit "get" machen kann oder sollte. Jedcoh hab ich noch keine weitere Antwort bekommen. Deswegen wende ich mich auch noch an Euch, da ich weis, dass man hier zu jeder Zeit ne Antwort bekommt! :thumpsup:

Die meinten dort, dass man die Werte irgendwie an den Verweislink hängen soll... naja... keine Ahnung. Ich hab es erst mit Cookies versucht, aber da hatte ich keien großen erfolg.

Wie du auch schon bemerkt hast, hat SelfHtml nichts brauchbares ausgespuckt


Mit freunlichen Grüßen

Sauger



@ Whiteletter:

So meinten die das bei JS -welt auch... aber wie mach ich das und wie les ich die aus? Das ist mein problem!
Mit Zitat antworten
  #5 (permalink)  
Alt 26.05.2005, 17:45
Benutzerbild von Quidoff
wie auch immer
 
Registriert seit: 03.04.2004
Ort: Jossgrund
Alter: 23
Beiträge: 1.016
Also du könntest die Werte an PHP per GET übergeben. Das mit dem an die URL anhängen funktioniert so.
Ich mach es mal am Beispiel PHP.
document.writeln("index.php?id="+ID+"&page="+PAGE" );
ID und PAGE sind in dem Fall JS Variablen.

Oder wenn du ein Formular hast, dann ganz einfach mit.
<form action="index.php" method="GET" (oder Post)>
<input name="id" type="hidden" value="1" />
<input name="id" type="text" value="" />
</form>

An dieser Stelle stehen dann natürlich deine Variablen.

//edit
Tip
Jetzt musst du aus diesem String nur alle Variablen herausfinden. Das Trennzeichen zwischen einem Wert und der nächsten Variablen ist & und das zwischen einer Variablen und ihrem Wert ist =
Du musst auch daran denken, dass am Anfang vom String auch noch das ? steht. Das brauchst du auch nicht.

//edit2
Die Lösung?

Mfg
KoЯn

Geändert von Quidoff (26.05.2005 um 18:03 Uhr).
Mit Zitat antworten
  #6 (permalink)  
Alt 26.05.2005, 18:51
DSL-Sauger
Gast
 
Beiträge: n/a
Das werd ich gleich mal ausprobieren! Und die "Lösung?" ist genau das, was ich gesucht habe

Jetzt hab ich abe rnoch ne andere Frage und ich find irgendwie keine passende Erklärung.

Und zwar wie kann ich jetzt mit JS eine neue Seite bzw. ein bereits vorhandene HTML Datei öffnen? Und wo öffnet ma die? Im Script oder im onClick="" Bereich!?


Mit freundlichen Grüßen

Sauger
Mit Zitat antworten
  #7 (permalink)  
Alt 26.05.2005, 19:36
Benutzerbild von Quidoff
wie auch immer
 
Registriert seit: 03.04.2004
Ort: Jossgrund
Alter: 23
Beiträge: 1.016
Also du hast auf einer Seite ein Formular mit deiner Frage. Und in den action Tag von form schreibst du das Ziel, wohin die Variablen hin übergeben werden sollen. Die Namen der Elemente innerhalb des Formulars sind gleichzeitig die Namen der Variablen, die mit GET übergeben werden. Bsp:
HTML-Code:
<form action="seite2.html" method="GET">
<input type="text" name="textfeld1" />
<input type="antwort" name="antwort" />
<input type="submit" value=" Absenden ">
</form>
Wenn man nun auf Absenden klickt, dann wird seite2.html?textfeld1=Wert1&antwort=falsch aufgerufen. Wenn du in das erste Textfeld "Wert1" und in das zweite Textfeld "falsch" eingegeben hast.

Mfg
KoЯn
Mit Zitat antworten
  #8 (permalink)  
Alt 26.05.2005, 20:54
DSL-Sauger
Gast
 
Beiträge: n/a
OK! Soweit bin ich nun. Wie kann ich nun die Werte auslesen? Oder sind die Variablen noch die selben?!

Noch was anderes... es werden ja jetzt nur die Antworten übertragen. Aber wie mach ich das wenn ich nur die ausgerechneten Punkte für diese eine Seite übertragen will? Da muss ich doch dann den errechneten Wert in ein Input-text feld eintragen lassen oder!? Wenn ja wie mach ich des?

Wie könnte ich denn die Werte aus der ersten Seite auf die übernächste Seite übertragen? Also dass die Werte erst von Seite 1 auf Seite 2 und danach zusmamen mit neuen Werten auf Seite 3 übertragen werden?

Ich bin dir jeden Post mehr dankbar !


Noch mal was anderes: Die Werte, id eübergeben werden, werden an die Seite übergeben, die man im Action-Taa angegeben hat, oder?

Geändert von DSL-Sauger (26.05.2005 um 21:16 Uhr).
Mit Zitat antworten
  #9 (permalink)  
Alt 26.05.2005, 21:27
Benutzerbild von Quidoff
wie auch immer
 
Registriert seit: 03.04.2004
Ort: Jossgrund
Alter: 23
Beiträge: 1.016
Zitat:
Noch mal was anderes: Die Werte, id eübergeben werden, werden an die Seite übergeben, die man im Action-Taa angegeben hat, oder?
Ja genau.

Du müsstest auf der aktuellen Seite berechnen lassen, ob die Antwort richtig ist. Und wenn die richtig ist, dann muss zur Variablen Punkte eins addiert werden. Ist bei JS natürlich dumm, weil man sich nur den Quelltext anschauen muss, um zu wissen was die richtige Antwort ist. Du machst dann in dein Forumular folgendes:
document.writeln('<input type="hidden" value="'+GetParam(punke)+'" name="punkte" />

//edit
Probier das mal. Speichere es als test.html und rufe es erst ganz normal auf und drücke auf den Button. Dann ruf es auf mit "test.html?punkte=1337" und drücke dann auf den Button.

HTML-Code:
<html>
<head>
<title>Für DSL-Sauger</title>
<SCRIPT type="text/Javascript">
<!--
function GetParam(name)
{
  var start=location.search.indexOf("?"+name+"=");
  if (start<0) start=location.search.indexOf("&"+name+"=");
  if (start<0) return 0;
  start += name.length+2;
  var end=location.search.indexOf("&",start)-1;
  if (end<0) end=location.search.length;
  var result=location.search.substring(start,end);
  var result='';
  for(var i=start;i<=end;i++) {
    var c=location.search.charAt(i);
    result=result+(c=='+'?' ':c);
  }
  return unescape(result);
}
//-->
</SCRIPT>
</head>

<body>


<form name="form1" action="test.html" method ="GET">
<SCRIPT type="text/Javascript">document.write("<input name=\"punkte\" type=\"hidden\" value=\""+GetParam('punkte')+"\" />");</SCRIPT>
<input value="Wie viele Punkte?" type="button" onClick="alert(document.form1.punkte.value);">
</form>

</body>
</html>
Es funktioniert zwar, hat aber den großen Nachteil, dass man ganz einfach die Punktzahl in der Adressleiste ändern kann. Mit PHP und POST wäre das alles besser gegangen.

Mfg
KoЯn

Geändert von Quidoff (26.05.2005 um 21:49 Uhr).
Mit Zitat antworten
  #10 (permalink)  
Alt 26.05.2005, 21:53
DSL-Sauger
Gast
 
Beiträge: n/a
Irgendwie ghet das nicht ganz... Schau dir doch bitte mal den Quelltext an!

Zitat:
<html>
<head>
<title>
</title>

<script language="JavaScript">
<!--
function punkte_zaehlen()
{
var F1A1=window.document.Quiz1.F1A1.checked,
F1A2=window.document.Quiz1.F1A2.checked,
F1A3=window.document.Quiz1.F1A3.checked,
F1A4=window.document.Quiz1.F1A4.checked,
a=0, b=0, c=0, d=0, F1=0,

F2A3=window.document.Quiz1.F2[2].checked,
a=0, F2=0,

F3A4=window.document.Quiz1.F3[3].checked,
a=0, F3=0,

F4A2=window.document.Quiz1.F4[1].checked,
a=0, F4=0,

F5A1=window.document.Quiz1.F5[0].checked,
a=0, F5=0,

F6A3=window.document.Quiz1.F6[2].checked,
a=0, F6=0;

Gesamt=0

//RAM//

if (F1A1==true)
{
a=window.document.Quiz1.F1A1.value;
a=parseFloat(a);
}
else
{
a=-1
a=parseFloat(a);
}


if (F1A2==true)
{
b=window.document.Quiz1.F1A2.value;
b=parseFloat(b);
}
else
{
b=-1;
b=parseFloat(b);
}


if (F1A3==true)
{
c=window.document.Quiz1.F1A3.value;
c=parseFloat(c);
}
else
{
c=-1;
c=parseFloat(c);
}


if (F1A4==true)
{
d=window.document.Quiz1.F1A4.value;
d=parseFloat(d);
}
else
{
d=-1;
d=parseFloat(d);
}

F1=a+b+c+d;
F1=parseFloat(F1);


//Overclocking//

if (F2A3==true)
{
a=window.document.Quiz1.F2[2].value;
a=parseFloat(a);
}
else
{
a=-1;
a=parseFloat(a);
}

F2=a;
F2=parseFloat(F2);


//PCI Express//

if (F3A4==true)
{
a=window.document.Quiz1.F3[3].value;
a=parseFloat(a);
}
else
{
a=-1;
a=parseFloat(a);
}

F3=a;
F3=parseFloat(F3);


//NOOB//

if (F4A2==true)
{
a=window.document.Quiz1.F4[1].value;
a=parseFloat(a);
}
else
{
a=-1;
a=parseFloat(a);
}

F4=a;
F4=parseFloat(F4);


//Satz//

if (F5A1==true)
{
a=window.document.Quiz1.F5[0].value;
a=parseFloat(a);
}
else
{
a=-1;
a=parseFloat(a);
}

F5=a;
F5=parseFloat(F5);


//Firewall//

if (F6A3==true)
{
a=window.document.Quiz1.F6[2].value;
a=parseFloat(a);
}
else
{
a=-1;
a=parseFloat(a);
}

F6=a;
F6=parseFloat(F6);


//Gesamte Rechnung//

Gesamt=F1+F2+F3+F4+F5+F6;
Gesamt=parseFloat(Gesamt);

}
//-->
</script>
</head>
<body>
<h2>
Quiz
</h2>
<h3>
Teil 1 von 4 - Computer
</h3>
<table border="0">

<form name="Quiz1" method="GET" action="Seite2.html">
<tr>
<td>
<h4>Welche Gr&ouml;&szlig;en an RAMbausteinen gibt es?</h4>
</td>
</tr>
<tr>
<td>
512 MB
</td>
<td>
<input type="checkbox" name="F1A1" value="1">
<input type="checkbox" name="F1A2" value="-1">
</td>
<td>
265 MB
</td>
</tr>
<tr>
<td>
129 MB
</td>
<td>
<input type="checkbox" name="F1A3" value="-1">
<input type="checkbox" name="F1A4" value="1">
</td>
<td>
1024 MB
</td>
</tr>
<tr>
<td>
<br>
<br>
<h4>Was ist <i>Overclocking</i>?</h4>
</td>
</tr>
<tr>
<td>
Man macht etwas an einer Uhr
</td>
<td>
<input type="radio" name="F2" value="">
<input type="radio" name="F2" value="">
</td>
<td>
Eine Uhr geht zu schnell
</td>
</tr>
<tr>
<td>
Das auf- oder runtertakten eines Prozessors
</td>
<td>
<input type="radio" name="F2" value="1">
<input type="radio" name="F2" value="">
</td>
<td>
Die manuelle Zeitumstellung eines Rechnersystems
</td>
</tr>

<tr>
<td>
<br>
<br>
<h4>Was ist <i>PCI-Express</i>?</h4>
</td>
</tr>
<tr>
<td>
Ein neuer Schnellzug
</td>
<td>
<input type="radio" name="F3" value="">
<input type="radio" name="F3" value="">
</td>
<td>
Ein neuer Paketdienst der Deutschen Post
</td>
</tr>
<tr>
<td>
Eine "Print Cleaning Injection" für den Drucker
</td>
<td>
<input type="radio" name="F3" value="">
<input type="radio" name="F3" value="1">
</td>
<td>
Eine neue Generation der Schnittstelle für Grafikkarten
</td>
</tr>
<tr>
<td>
<br>
<br>
<h4>Was ist ein <i>N00B</i>?</h4>
</td>
</tr>
<tr>
<td>
Eine Perepherieschnittstelle
</td>
<td>
<input type="radio" name="F4" value="">
<input type="radio" name="F4" value="1">
</td>
<td>
Ein unerfahrener PC-Nutzer
</td>
</tr>
<tr>
<td>
Ein neuartiger Warnton
</td>
<td>
<input type="radio" name="F4" value="0">
<input type="radio" name="F4" value="0">
</td>
<td>
Eine tropische Frucht aus den tiefen des asiatischen Regenwaldes
</td>
</tr>
<tr>
<td>
<br>
<br>
<h4>Was heißt dieser Satz:
<br>
<i>0MFG - 57UP!D CH3473R</i></h4>
</td>
</tr>
<tr>
<td>
Oh My Fucking God - Stupid Cheater
</td>
<td>
<input type="radio" name="F5" value="1">
<input type="radio" name="F5" value="0">
</td>
<td>
One Man Fakes Games - *Zahlencode*
</td>
</tr>
<tr>
<td>
*omfg* - Dummes Autokennzeichen
</td>
<td>
<input type="radio" name="F5" value="0">
<input type="radio" name="F5" value="0">
</td>
<td>
*ich hab keine Ahnung! Irgend eine Geheimsprache*
</td>
</tr>
<tr>
<td>
<br>
<br>
Was ist eine Firewall?
</td>
</tr>
<tr>
<td>
Ein wissenschaftlicher Begriff für ein Vulkaninferno
</td>
<td>
<input type="radio" name="F6" value="0">
<input type="radio" name="F6" value="0">
</td>
<td>
Ein Begriff der Feuerwehr für einen Brand
</td>
</tr>
<tr>
<td>
Eine Sicherheitsanwendung für den Computer
</td>
<td>
<input type="radio" name="F6" value="1">
<input type="radio" name="F6" value="0">
</td>
<td>
Ein neuer Spielfilm
</td>
</tr>
</table>
document.writein('<input type="hidden" value="+punkte_zaehlen(Gesamt)+" name="Gesamt">');
<input type="submit" value="Weiter..." onClick="punkte_zaehlen()">
</form>
</body>
</html>
Eigentlcih müsste sich doch jetzte die "Seite2.html" laden mit den Werten der Variablen des Formulars und der des Punktestandes (Gesamt)!
Tuts aber nicht!
Mit Zitat antworten
  #11 (permalink)  
Alt 27.05.2005, 00:06
Benutzerbild von Quidoff
wie auch immer
 
Registriert seit: 03.04.2004
Ort: Jossgrund
Alter: 23
Beiträge: 1.016
Die "Seite2.html" Datei hab ich jetzt zwar nicht, aber Firefox zeigt mir diese Fehlermeldung.


Daraus schließe ich, dass es funktioniert. Ich habe an deinem Code lediglich 2 Dinge geändert.
  1. Ich habe das Form Element vor das table Element gesetzt, da innerhalb einer Tabelle kein Formular erlaubt ist.
  2. Ist zwar kein richtiger Fehler, gehört aber zum W3C Standard. es heißt nicht lang="JavaScript", sondern type="text/javascript"

Und jetzt der Trick, wie ich die Fehler ganz einfach gefunden habe, ohne mir deinen Code überhaupt anzukucken. HTML Validator.
Eine Erweiterung für den Firefox. Er zeigt dir alle Fehler im Code an. Zeigt dir die Stelle, wo der Fehler ist und verrät dir sogar was falsch ist und wie du es richtig machst.

Mfg
KoЯn
Mit Zitat antworten
  #12 (permalink)  
Alt 27.05.2005, 02:36
DSL-Sauger
Gast
 
Beiträge: n/a
Ja ber für die Variable "Gesamt" wurde der Wert nicht dahinter gesetzt wie bei den anderen!
Und wenn du dir links unten neber dem Button mal die Stelle anschaust, siehste du, dass dort " document.writein(''); " steht... das ist doch nicht korrekt oder!?

Danke für das PlugIn, gleich mal ausprobieren!
Mit Zitat antworten
  #13 (permalink)  
Alt 27.05.2005, 03:40
Benutzerbild von Quidoff
wie auch immer
 
Registriert seit: 03.04.2004
Ort: Jossgrund
Alter: 23
Beiträge: 1.016
Die Funktion punkte_zaehlen() erwartet keine Parameter. Warum übergibst du dann "Gesamt" als Parameter an die Funktion? In der letzten Zeile hast du nur die script Tags vergessen.
Zitat:
<script type="text/javascript">document.writein("<input type=\"hidden\" value=\""+punkte_zaehlen(Gesamt)+"\" name=\"Gesamt\">");</script>
So ist es etwas richtiger. Das mit dem Parameter ist noch falsch.

Zitat:
<input type="submit" value="Weiter..." onClick="javascript:punkte_zaehlen();">
Was soll diese Zeile bezwecken. Die Funktion gibt überhaupt nichts zurück. Du willst wahrscheinlich die Gesamtpunktzahl in dem Wert von diesem hidden input speichern. Dann mache das halt auch. Du weist in der Funktion der Variablen Gesamt nur die Punktzahl zu. Mit
document.Quiz1.Gesamt.value = Gesamt;
speicherst du den Wert im Formular ab. Dann wird er auch gesendet.

Mfg
KoЯn
Mit Zitat antworten
  #14 (permalink)  
Alt 27.05.2005, 14:41
DSL-Sauger
Gast
 
Beiträge: n/a
Ok es geht jetzt. Nur wie kann ich nun die Werte aus der Adressenzeile wieder auslesen?


mfg
Cya
Mit Zitat antworten
  #15 (permalink)  
Alt 27.05.2005, 15:00
Benutzerbild von Quidoff
wie auch immer
 
Registriert seit: 03.04.2004
Ort: Jossgrund
Alter: 23
Beiträge: 1.016
Na hiermit.
Zum Beispiel rufst du die Funktion mit GetParam("Gesamt") auf, um die Punktzahl zu erhalten. Weil die Funktion einen Rückgabewert hat, solltest du ihn in einer Variablen speichern. Du solltest die Zeile "if (start<0) return '';" durch "if (start<0) return 0;" ersetzen, damit wenn kein Wert übergeben wird die Punktzahl 0 ist.

Mfg
KoЯn
Mit Zitat antworten
Sponsored Links
Antwort


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

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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



Alle Zeitangaben in WEZ +1. Es ist jetzt 02:36 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
© 2002-2012 - www.dsl-user.de -