Zufallsauswahl mit HTML od. JS

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Zufallsauswahl mit HTML od. JS

    Hallo! Ich habe auf meinem Server leider keine Rechte irgendwelche Scripte auszuführen! Ich habe nun ein Fenster für eine Umfrage auf meiner Seite. (Ein PopUp öffnet sich beim betreten der Seite, wo die Umfrage ist! Das Umfrageergebnis wird über einen kostenlosen formmailer verschickt!) Nach der Umfrage, wird ein Sponsorfenster aufgerufen! Nun möchte ich jedesmal einen anderen Sponsor haben! Hier mal der HTML-Code:

    <FORM NAME="UMFRAGE" ACTION="http://www.webmasterworld.de/cgi-bin/formmailer/fm.pl" METHOD=POST>
    <INPUT TYPE=HIDDEN NAME="recipient" VALUE="webmaster@elton-schau-mal-nach.de"><INPUT TYPE=HIDDEN NAME="subject" VALUE="UMFRAGE"><INPUT TYPE=HIDDEN NAME="redirect" VALUE="http://hier-die-Adresse-des-Sponsors.de"><INPUT TYPE=HIDDEN NAME="env_report"
    VALUE="REMOTE_HOST,REMOTE_ADDR,HTTP_USER_AGENT">

    Vielleicht indem ich VALUE="./datei.txt"
    und da stehen die verschiedenen URL´s untereinander! Kann mir jemand helfen???
    No internationalisation, no fun.

  • #2
    No luck here.

    Du kannst höchstens alle Values in einen Array packen, dann per JS auf ein zufälliges Element des Arrays zugreifen und dieses per write als VALUE hinschreiben.

    CAT Music Files

    Kommentar


    • #3
      Und wo steht, wie ich das mache? Leider keine Ahnung wie das geht!
      No internationalisation, no fun.

      Kommentar


      • #4
        Original geschrieben von Downline
        Und wo steht, wie ich das mache? Leider keine Ahnung wie das geht!
        dann informier dich mal, selfhtml ist z.b. eine sehr gute deutschsprachige quelle für html/ css/ javascript. http://selfhtml.teamone.de

        wenn du nämlich immer nur hier fragst und fertige lösungen erwartest, kannst du den spruch "Bin neu, aber das wird schon!" wahrscheinlich ewig unter deinen beiträgen stehen lassen...
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Vielleicht einen konkreteren Link?? Auf TeamOne habe ich schon gekuckt, nur nicht das gefunden was ich suche! Zum Thema per Zufall auswählen, habe ich den JavaScript-Befehl random() gefunden! Nur kann der mir nicht weiterhelfen, per Zufall eine Zeile aus einer Datei auszulesen!
          No internationalisation, no fun.

          Kommentar


          • #6
            sky hat dir doch schon eine lösungmöglichkeit genannt:
            alles werte in ein array, und dann mit einem zufälligen index darauf zugreifen...
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Ja genau! Nur das mit dem zufälligem Index krieg ich nicht hin. Wie gesagt, auf teamone gibts zum Thema Zufall nur random()!! Das hilft mir nicht weiter!
              also:

              <script type="text/javascript">
              <!--
              (Dann alle Werte in einen Array)
              Adresse = new Array('http://adresse1.de','http://adresse2.de','http://adresse3.de');

              (Und dann??? Es soll eine beliebige ausgewählt werden!!)

              //-->
              </script>
              No internationalisation, no fun.

              Kommentar


              • #8
                Adresse = new Array('http://adresse1.de','http://adresse2.de','http://adresse3.de');

                while (addressindex<1 && addressindex>Adresse.length) {
                addressindex = round(Math.random()*10);
                }

                Zufallsergebnis = Adresse[addressindex];


                So, ich denke das sollte gehen. Die random()-Funktion von JS ist leider etwas unflexibel, so dass man da nachhelfen muss. Meine Lösung ist vielleicht nicht der effektivste Weg, aber ich habe keine Lust dazu, mich nun länger damit zu befassen...

                CAT Music Files

                Kommentar


                • #9
                  Original geschrieben von Sky
                  while (addressindex<1 && addressindex>Adresse.length) {
                  addressindex = round(Math.random()*10);
                  }
                  warum denn die whileschleife?

                  ich würds einfach so machen:

                  zufall = Math.floor(Math.random() * Adresse.length);

                  random liefert eine bruchzahl zwischen 0 und 1, diese wird mit der anzahl der elemente multipliziert, und anschliessend wird der nachkommateil mit floor abgeschnitten, um eine ganze zahl zu erhalten.

                  na ja und dann zugriff wie du schon sagtest über
                  Adresse[zufall];
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    So nicht - was ist, wenn du 2 Arrayelemente hast und die Zufallszahl 0.34... ist? Ergebnis wäre 0.68..., sprich nach der Rundung 0. Die while-Schleife in Kombination mit dem Multiplikator 10, der die Kommastellen eins nach links verschiebt, ist schon vonnöten!

                    CAT Music Files

                    Kommentar


                    • #11
                      Original geschrieben von Sky
                      So nicht - was ist, wenn du 2 Arrayelemente hast und die Zufallszahl 0.34... ist? Ergebnis wäre 0.68..., sprich nach der Rundung 0. Die while-Schleife in Kombination mit dem Multiplikator 10, der die Kommastellen eins nach links verschiebt, ist schon vonnöten!
                      was meinst du denn, wofür ich das ergbnis von random mit Adresse.length multipliziere?

                      zu deinem beispiel: 2 elemente => array.length = 2

                      wenn 0 <= Math.random() < 0.5:
                      *2 ergibt irgendwas >= 0 und < 1
                      floor davon ist 0 => erstes array-element wird angesprochen.

                      wenn 0.5 <= Math.random() < 1:
                      *2 ergibt irgendwas >= 1 und < 2
                      floor davon ergibt 1 => zweites array-element wird angesprochen.


                      und das funzt so für jede beliebige array-länge.

                      mfg wahsaga


                      p.s.:
                      was ist, wenn du 2 Arrayelemente hast und die Zufallszahl 0.34... ist? Ergebnis wäre 0.68..., sprich nach der Rundung 0. Die while-Schleife in Kombination mit dem Multiplikator 10, der die Kommastellen eins nach links verschiebt, ist schon vonnöten!
                      gut, verschieben wir die kommastelle um eins nach RECHTS (das entspräche der mltiplikation mit 10, nicht links).
                      dann hast du in dem fall also 3.4, floor davon wäre 3.
                      lässt sich nicht so besonders gut auf array[0] oder array[1] umlegen...


                      [Editiert von wahsaga am 09-11-2001 um 07:35]
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Original geschrieben von Sky
                        while (addressindex<1 && addressindex>Adresse.length) {
                        addressindex = round(Math.random()*10);
                        }
                        und noch ein denkfehler deinerseits:

                        nehmen wir mal ein adress-array von 10 elementen, => Adresse.length = 10.

                        wie soll denn bitte die bedingung deiner while-schleife
                        (addressindex<1 && addressindex>Adresse.length)
                        _jemals_ erfüllt sein?

                        gleichzeitig kleiner als 1 UND grösser als 10? wird schwierig...
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Das ist kein direkter Denkfehler - Dass es bei mehr als 10 Elementen Probleme gibt, war mir auch klar, als ich das Script geschrieben habe. Aber der Multiplikator muss je nach den Umständen einkalkuliert werden - eben so, dass Werte möglich sind, die hoch genug sind, aber gleichzeitig die Performance dieses gräßlichen Workarounds nicht noch mehr gedrückt wird.

                          Vielleicht hätte ich das noch erwähnen sollen - aber generell kann man sich das ja denken... was du ja auch getan hast.

                          EDIT: Man kann den Multiplikator ja auch automatisch bestimmen lassen - um dabei Probleme mit besonders kleinen Werten zu vermeiden und gleichzeitig den Multiplikator nicht zu hoch zu setzen, bedarf es allerdings einiger Fallunterscheidungen.
                          Mir bleibt hier nur zu wiederholen: Keine Lust dazu

                          CAT Music Files

                          Kommentar


                          • #14
                            Ich weiß gar nicht, warum ihr euch so beharkt ... Wah´s Lösung paßt doch perfekt:
                            Code:
                            Adresse = new Array('http://adresse1.de','http://adresse2.de','http://adresse3.de');
                            addressindex = Math.floor(Math.random() * Adresse.length);
                            Zufallsergebnis = Adresse[addressindex];
                            window.open (Zufallsergebnis);
                            oder ... vom König der Einzeiler (=ich ) mal eben zusammengefasst:
                            Adresse = new Array('http://adresse1.de','http://adresse2.de','http://adresse3.de');
                            window.open(Adresse(Math.floor(Math.random() * Adresse.length), 'popup', 'width:300;height:200;scrolling:no;menubar=off');
                            mein Sport: mein Frühstück: meine Arbeit:

                            Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                            Kommentar

                            Lädt...
                            X