Mini-Me: 1 zufälligen aus 7 JavaScript-Befehlen ausführen

Erstmal ein "Moin" an alle, die das hier lesen!

Jetzt zum Thema:
Ich habe auf meiner Website auf der Seite http://www.sebi-mini-me.de/lustige_videos.html (Lustige Videos) ein kleinen JavaScript-Befehl programmiert, der einen <div>-Bereich durch eine Überschrift und einem 2 <br> darunter liegenden YouTube-Video-Embed ersetzt. Ein <br> darunter befindet sich letztendlich noch ein rechts-bündiger "Nach oben" Link. Dazu wird der Befehl ~~~ document.getElementById("id").innerHTML="<embed...></embed>"[code] verwendet. Nun erzeuge ich noch den <div id="id">-Bereich und einen Link
<a href="javascript:youtube('8seMHmqQNGQ';'Trailer: Evan Allm&auml;chtig')">Evan Allm&auml;chtig Trailer abspielen</a>.
In den <div>-Bereich schreibe ich einfach etwas beliebiges rein, oder ich füge einen anderen YouTube-Video-Embed ein.

Der ganze Code ist:
[code]<script language="JavaScript">
function youtube(URL,Name) {
var movie = URL
var Name = Name
var id = "player"
document.getElementById(""+id+"").innerHTML="<b>"+Name+":</b><br><br><OBJECT width="425" height="355"><PARAM NAME="movie" VALUE="http://www.youtube.com/v/"+movie+"&color1=0x2b405b&color2=0x6b8ab6&border=0&hl=en"><PARAM NAME="wmode" Value="transparent"><Embed type="application/x-shockwave-flash" src="http://www.youtube.com/v/"+movie+"&color1=0x2b405b&color2=0x6b8ab6&border=0&hl=en" width="425" height="355" wmode="transparent"></embed></OBJECT><br><div align="right"><a href="#oben">Nach oben</a></div><br>";
}
</script>

  
Nun zu meiner Frage:  
Ich habe jetzt 6 Links mit entsprechenden Werten gefüllt und möchte einen zufällig ausgewählten als body-onload ausführen. Nur kriege ich kein(en) vernünftiges/-en Random-Skript zustande.  
Könnt ihr mir n bissl auf die Sprünge helfen?  
LG Mini-Me
  1. Hallo Mini,

    Könnt ihr mir n bissl auf die Sprünge helfen?

    Pseudocode (hab die JS-Syntax nicht wirklich im Kopf):

    switch(math.floor(math.random()*7))
    {
    case 0: befehl1();
    case 1: befehl2();
    ...
    case 6: befehl7();
    }

    Jonathan

    1. Ich weiß nicht wieso, aber mein PC meinte meine Antwort mit der Ergänzung ers losschicken zu müssen, wenn er aus dem Ruhezustand wieder aufgeweckt wird.

      Hallo Mini,

      Könnt ihr mir n bissl auf die Sprünge helfen?

      Pseudocode (hab die JS-Syntax nicht wirklich im Kopf):

      switch(math.floor(math.random()*7))
      {
      case 0: befehl1();
      case 1: befehl2();
      ...
      case 6: befehl7();
      }

      Jonathan

      Das habe ich wie folgt probiert:

        
       <script language="JavaScript">  
       var Zufall = Math.round((7-1) * Math.random()) + 1  
       switch(Zufall) {  
         case "0":  
           youtube('5mAQ2LWxCR4','Jan Hegenberg - Einfach mal die Fresse halten!');  
           break;  
         case "1":  
           youtube('WR4N_dioSVM','Jan Hegenberg - Cheater an die Wand');  
           break;  
         case "2":  
           youtube('SZqwvjwqwK4''Vadrum meets &quot;Super Mario Bros.&quot;');  
           break;  
         case "3":  
           youtube('PNpelsDXQrU','Vadrum meets &quot;The Simpsons&quot;');  
           break;  
         case "4":  
           youtube('j3vLQ7iCz94','Vadrum meets &quot;William Tell&quot;');  
           break;  
         case "5":  
           youtube('kW0hHJFrhrA','Vadrum meets &quot;McGiver&quot;');  
           break;  
         case "6":  
           youtube('28743','Tipps und Tricks für &quot;Super Mario Galaxy&quot;');  
           break;  
         default:  
           alert("Fehler");  
           break;  
       }  
       </script>  
      
      

      Das habe ich nun in dean <head>-Bereich eingebunden, aber es klappt einfach nicht.
      Zum test habe ich das ganze noch mal als eine function definiert und dei als <body onload=""> eingebunden, was auch nicht klappte. Was mache ich falsch?
      Kann es daran liegen, dass die function "youtube" erst später im body definiert wird?

      1. @@Mini-Me:

        switch(math.floor(math.random()*7))

        var Zufall = Math.round((7-1) * Math.random()) + 1
        switch(Zufall)

        Nein! Das Einzige, was bei Jonathan zu verbessern war, war das kleingeschriebene 'math'. Ein solches Objekt gibt es nicht; 'Math' existiert.

        Das habe ich nun in dean <head>-Bereich eingebunden, aber es klappt einfach nicht.

        Den Begriff „Klappe“ kenne ich bei Filmen nur beim Dreh; nicht jedoch beim Anschauen, sei es im Kino oder bei YouTube.

        Als Fehlerschreibung klappt „klappt einfach nicht“ einfach nicht.

        Live long and prosper,
        Gunnar

        --
        „Das Internet ist ein großer Misthaufen, in dem man allerdings auch kleine Schätze und Perlen finden kann.“ (Joseph Weizenbaum)
        1. So, hier das fertige Script:

            
           <script type="text/javascript">  
           switch(Math.floor(Math.random()*7)) {  
           case 0:  
           youtube('5mAQ2LWxCR4','Jan Hegenberg - Einfach mal die Fresse halten!');  
           break;  
           case 1:  
           youtube('WR4N_dioSVM','Jan Hegenberg - Cheater an die Wand');  
           break;  
           case 2:  
           youtube('SZqwvjwqwK4','Vadrum meets &quot;Super Mario Bros.&quot;');  
           break;  
           case 3:  
           youtube('PNpelsDXQrU','Vadrum meets &quot;The Simpsons&quot;');  
           break;  
           case 4:  
           youtube('j3vLQ7iCz94','Vadrum meets &quot;William Tell&quot;');  
           break;  
           case 5:  
           youtube('kW0hHJFrhrA','Vadrum meets &quot;McGiver&quot;');  
           break;  
           case 6:  
           gametrailers('28743','Tipps und Tricks für &quot;Super Mario Galaxy&quot;');  
           break;  
           }  
           </script>  
          
          

          So funktioniert es einwandfrei. Ich hatte mich nur die ganze Zeit damit rumgeärgert, weil es einfach nicht funktionieren wollte. Ich habe lediglich ein Komma (,) in einem Befehl vergessen und der ganze Script funktionierte so nicht.
          Jetzt geht alles, Danke für eure Tipps!
          MfG Mini-Me

  2. Ich habe mir son kleines Zufallsscript jetzt wohl zusammengebastelt, das bisher nur die Variablen URL und Name anzeigt bzw. an erster Stelle in die Seite hineinschreibt. Nur weiß ich nicht, wie ich es anstellen soll, dass diese Variablen in die Function integriert werden und diese beim Seitenaufbau geladen wird.

    Das Zufallsscript (welches die Variablen anzeigt und im <Head>-Bereich ist):

      
    <script language="JavaScript">  
    var Anzahl = 7  
    Video = new Array(Anzahl);  
      
    Video[01] = "'5mAQ2LWxCR4','Jan Hegenberg - Einfach mal die Fresse halten!'"  
    Video[02] = "'WR4N_dioSVM','Jan Hegenberg - Cheater an die Wand'"  
    Video[03] = "'SZqwvjwqwK4''Vadrum meets &quot;Super Mario Bros.&quot;'"  
    Video[04] = "'PNpelsDXQrU','Vadrum meets &quot;The Simpsons&quot;'"  
    Video[05] = "'j3vLQ7iCz94','Vadrum meets &quot;William Tell&quot;'"  
    Video[06] = "'kW0hHJFrhrA','Vadrum meets &quot;McGiver&quot;'"  
    Video[07] = "'28743','Tipps und Tricks für &quot;Super Mario Galaxy&quot;'"  
      
      
    var Zufall = Math.random()  
    var Zufall = Math.round((Anzahl-1) * Zufall) + 1  
      
    document.write(Video[Zufall])  
    </script>  
    
    

    Nun habe ich mir gedacht, ich könne "document.write(Video[Zufall])" einfach durch "youtube(Video[Zufall])" ersetzen. Das klappt leider nicht. Was muss ich nun machen, damit der dieser Zufallstext als wert in den Befehl eingesetzt wird und dieser ausgeführt wird?

    1. @@Mini-Me:

      <script language="JavaScript">

      Das ist falsch. Das 'type'-Attribut fehlt; das 'language'-Attribut kommt in die Mülltonne. [<http://de.selfhtml.org/javascript/intro.htm#javascriptbereiche@title=SELFHTML: JavaScript-Bereiche in HTML definieren>]

      var Anzahl = 7
      Video = new Array(Anzahl);

      Das ist unsinnig. Wenn später noch was hinzukommt oder wegfällt, müsstest du den Wert "7" abändern. Das vergisst man schnell mal.

      Notwendig ist die Angabe der Anzahl der Arrayelemente nicht; und mit 'Video.[ref:self812;javascript/objekte/array.htm#length@title=lenght]' erhälst du bei Bedarf immer den aktuellen Wert.

      Außerdem sollte die Variable 'Video' nicht global sein. [<http://de.selfhtml.org/javascript/sprache/variablen.htm#definieren@title=SELFHTML: Variablen definieren>]

      Anstelle deiner beiden Zeilen einfach:
      var Video = new Array(Anzahl);

      Video[01] = "'5mAQ2LWxCR4','Jan Hegenberg - Einfach mal die Fresse halten!'"
      Video[02] = "'WR4N_dioSVM','Jan Hegenberg - Cheater an die Wand'"
      Video[03] = "'SZqwvjwqwK4''Vadrum meets &quot;Super Mario Bros.&quot;'"
      Video[04] = "'PNpelsDXQrU','Vadrum meets &quot;The Simpsons&quot;'"
      Video[05] = "'j3vLQ7iCz94','Vadrum meets &quot;William Tell&quot;'"
      Video[06] = "'kW0hHJFrhrA','Vadrum meets &quot;McGiver&quot;'"
      Video[07] = "'28743','Tipps und Tricks für &quot;Super Mario Galaxy&quot;'"

      Du solltest in JavaScript besser jede Anweisung mit ';' abschließen.

      Arrayindizes beginnen in JavaScript bei 0. [<http://de.selfhtml.org/javascript/objekte/array.htm#allgemeines@title=SELFHTML: Array: Allgemeines zur Verwendung>]

      Mit führenden Nullen solltest du in JavaSript vorsichtig sein; sie kennzeichnen einen Zahlenwert im Oktalsystem.

      Und HTML-Entity-Referenzen im JavaScript-Code zu verwenden, mag auch nicht die beste Idee sein. Verwende richtige Anführungszeichen, die du dann maskieren musst. [<http://de.selfhtml.org/javascript/sprache/notationen.htm#zeichenketten@title=SELFHTML: Steuerzeichen bei Zeichenketten>]

      var Zufall = Math.random()
      var Zufall = Math.round((Anzahl-1) * Zufall) + 1

      'var' ist in der zweiten Zeile unsinnig; die Variable 'Zufall' wurde bereits angelegt.

      Wann immer 'Math.round()' zusammen mit 'Math.random()' vorkommt, ist es mit an Sicherheit grenzender Wahrscheinlichkeit falsch. Wie es richtig geht, hat [Jonathan] bereitz gezeigt. Weitere Information dazu unter dem Suchgegriff "Gleichverteilung" im Forums-Archiv.

      document.write(Video[Zufall])

      Nein, wenn dein Script im 'head' des HTML-Dokuments steht, hat 'document.write()' darin nichts zu suchen. 'document.write()' schreibt seine Ausgabe genau an diese Stelle ins Dokument, und dort gehört sie nicht hin.

      Wie soll denn eigentlich die Ausgabe deines Scriptes aussehen. Sollte das irgendwelcher HTML-Code sein?

      Nun habe ich mir gedacht, ich könne "document.write(Video[Zufall])" einfach durch "youtube(Video[Zufall])" ersetzen. Das klappt leider nicht. Was muss ich nun machen, damit der dieser Zufallstext als wert in den Befehl eingesetzt wird und dieser ausgeführt wird?

      Was tut die Funktion 'youtube()'? Welche Parameter erwartet sie?

      Live long and prosper,
      Gunnar

      --
      „Das Internet ist ein großer Misthaufen, in dem man allerdings auch kleine Schätze und Perlen finden kann.“ (Joseph Weizenbaum)
      1. Hi,

        und mit 'Video.[ref:self812;javascript/objekte/array.htm#length@title=lenght]' erhälst du bei Bedarf

        ... die Fehlermeldung "Objekt unterstützt diese Eigenschaft oder Methode nicht" (oder so ähnlich). Zumindest, wenn man nach dem Titel des Links geht.

        Aber wann hat man dafür schon Bedarf?

        (ach ja, da die Grundform "erhalten", nicht "erhalsen", ist, muß es "erhältst" heißen).

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.