getreidemuehlen
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 30.12.2007, 13:18   #1
TP-Junior
 
Registriert seit: Dec 2007
Lukas1234567 macht alles soweit korrekt
Question

Was hab ich da Falsch gemacht? Eine art random Link Script.


Ich habe folgendes Skript zum Auswählen unterschiedlicher Musiktitel bei einem Linkklick geschrieben so eine art shuffle funktion und es funktioniert nicht richtig.
Kann mir jemand sagen was ich falsch gemacht hab oder was ich ändern muss?

Im HEAD:
Code:
<script language="JavaScript" type="Text/JavaScript">
function choose() {
var number = Math.ceil(Math.random()*11);
if (number == 1) {
  var song = 'Lied 1';
  var lied = 'Titel von Lied 1';
}
if (number == 2) {
  var song = 'Lied 2';
  var lied = 'Tiel von Lied 2';
}
if (number == 3) {
  var song = 'Lied 3';
  var lied = 'Titel von Lied 3';
}
if (number == 4) {
  var song = 'Lied 4';
  var lied = 'Titel von Lied 4';
}
if (number == 5) {
  var song = 'Lied 5';
  var lied = 'Titel von Lied 5';
}
if (number == 6) {
  var song = 'Lied 6';
  var lied = 'Titel von Lied 6';
}
if (number == 7) {
  var song = 'Lied 7';
  var lied = 'Titel von Lied 7';
}
if (number == 8) {
  var song = 'Lied 8';
  var lied = 'Titel von Lied 8';
}
if (number == 9) {
  var song = 'Lied 9';
  var lied = 'Titel von Lied 9';
}
if (number == 10) {
  var song = 'Lied 10';
  var lied = 'Title von Lied 10';
}
if (number == 11) {
  var song = 'Lied 11';
  var lied = 'Titel von Lied 11';
}
else {
  var song = 'Alternatives Lied';
  var lied = 'Alternativer Liedtitel';
}
}
choose();

function changesong() {
  if (number == 1) {while (number == 1) {choose();}}
  if (number == 2) {while (number == 2) {choose();}}
  if (number == 3) {while (number == 3) {choose();}}
  if (number == 4) {while (number == 4) {choose();}}
  if (number == 5) {while (number == 5) {choose();}}
  if (number == 6) {while (number == 6) {choose();}}
  if (number == 7) {while (number == 7) {choose();}}
  if (number == 8) {while (number == 8) {choose();}}
  if (number == 9) {while (number == 9) {choose();}}
  if (number == 10) {while (number == 10) {choose();}}
  if (number == 11) {while (number == 11) {choose();}}
  else {choose();}
  window.alert('Nächstes Lied: ' + lied + ' ');
}
</script>
Und dann im BODY:
Code:
<area shape="rect" coords="178,377,200,396"
          href="javascript:window.alert('Sorry, Scriptfehler');" target="play" alt="" onmouseover="this.href = 'player.swf?src=http://Musikort/' + song + '.mp3&autostart=yes';" onclick="window.alert('Lade: ' + lied + ' ');changesong();">
Das Skript soll bewirken das bei jedem Linkklick ein anderes Lied geladen wird.
Das seltsame ist wenn ich das obige Script ohne "function" Schreibe wird am anfang ein Lied ausgewählt,
aber ich brauche die Funktion für die Funktion "changesong" und mit onload="choose();" im body hat es auch nicht funktioniert.
Ich verwende übrigens den Firefox.

Geändert von Lukas1234567 (30.12.2007 um 13:30 Uhr).
Lukas1234567 ist offline   Mit Zitat antworten


Alt 31.12.2007, 12:02   #2
TP-Junior
 
Registriert seit: Mar 2006
Ort: Berlin
klaus_harrer macht alles soweit korrekt
Hallo

Es liegt wie ich glaube an der Gültigkeit der variable "number" sie ist nur in der function choosen Gültig. Die function changesong() kennt die Variable nicht.

Folgender Versuch:

Füge in der function choosen am ende "numberWithSong=new Array();"
Und in der function changesong am Anfang "number=choosen();"

Vieleicht solltest du statt den vielen if's switch
einsetzen.

Ps::

Vieleicht sollten die Functionen so ausehen:
Code:
//globale variable ausserhalb der Funktionen, startwert von oldNumber
oldNumber=null;

function choosen()
{
var number = Math.ceil(Math.random()*11);
if(number==0)
{
var song = 'Alternatives Lied';
var lied = 'Alternativer Liedtitel';
}
var song = 'Lied ' + number;
var lied = 'Titel von Lied ' + number;
numberWithSong=new Array(number,lied,song);
return numberWithSong;
}

function changesong() 
{
number=choosen();
while (number[0] == oldNumber) 
{
number=choose();
}
oldNumber=number[0];
window.alert('Nächstes Lied: ' + number[1] + ' ');
return number;
}

area shape="rect" coords="178,377,200,396"
          href="javascript:window.alert('Sorry, Scriptfehler');" target="play" alt="" onmouseover="playSound=changesong;this.href = 'player.swf?src=http://Musikort/' + playSound[2] + '.mp3&autostart=yes';" onclick="window.alert('Lade: ' + playSound[1] + ' ');">
MfG
Klaus harrer

Geändert von klaus_harrer (31.12.2007 um 13:53 Uhr).
klaus_harrer ist offline   Mit Zitat antworten
Alt 01.01.2008, 10:38   #3
TP-Junior
 
Registriert seit: Dec 2007
Lukas1234567 macht alles soweit korrekt
Red face

Danke


Danke für deine Hilfe ich versuch 's gleich mal ich kenn mich halt net so gut in JavaScript aus hab nur von Selfhtml gelernt

Und die Lieder kann ich dann wie früher konfigurieren nur eben mit switch?
Hab das mal gemacht jetzt kommt 'undefined' raus...


Nicht zu vergessen: Ich wünsch dir und allen die diesen Thred lesen ein frohes neues Jahr.

Geändert von Lukas1234567 (01.01.2008 um 11:29 Uhr).
Lukas1234567 ist offline   Mit Zitat antworten
Alt 01.01.2008, 11:22   #4
TP-Junior
 
Registriert seit: Mar 2006
Ort: Berlin
klaus_harrer macht alles soweit korrekt
Hallo

Was genau ist 'undefined'?
Hast du zufällig den Firefox mit 'Fehler-Konsole'?

Habe das Script korrigiert:
Code:
/globale variable ausserhalb der Funktionen, startwert von oldNumber
oldNumber=null;

function choosen()
{
var number = Math.ceil(Math.random()*11);
if(number==0)
{
var song = 'Alternatives Lied';
var lied = 'Alternativer Liedtitel';
}
var song = 'Lied ' + number;
var lied = 'Titel von Lied ' + number;
numberWithSong=new Array(number,lied,song);
return numberWithSong;
}

function changesong() 
{
number=choosen();
while (number[0] == oldNumber) 
{
number=choose();
}
oldNumber=number[0];
window.alert('Nächstes Lied: ' + number[1] + ' ');
return number;
}

area shape="rect" coords="178,377,200,396"
          href="javascript:window.alert('Sorry, Scriptfehler');" target="play" alt="" onmouseover="playSound=changesong();this.href = 'player.swf?src=http://Musikort/' + playSound[2] + '.mp3&autostart=yes';" onclick="playSound=changesong();window.alert('Lade: ' + playSound[1] + ' ');">

MfG
Klaus Harrer

Geändert von klaus_harrer (01.01.2008 um 12:37 Uhr).
klaus_harrer ist offline   Mit Zitat antworten
Alt 01.01.2008, 12:46   #5
TP-Junior
 
Registriert seit: Dec 2007
Lukas1234567 macht alles soweit korrekt
Fehlerkonsole zeigt nach dem klicken:
Zitat:
Zitat von Fehlerkonsole
Fehler: uncaught exception: Die Erlaubnis für den Aufruf der Methode Location.toString wurde verweigert
undefinid war aufjedenfall 'song' und 'lied'.


es tut jetzt...

Habe selbst noch ein paar fehler rausgenommen das script sieht jetzt so aus:
Code:
oldNumber=null;

function choosen()
{
var number = Math.ceil(Math.random()*11);
switch (number) {
  case 1:
  var song = "Dateiname Lied 1";
  var lied = "Titel 1";
break;
  case 2:
  var song = "...";
  var lied = "...";
break;
  case 3:
  var song = "...";
  var lied = "...";
break;
  case 4:
  var song = "...";
  var lied = "...";
break;
  case 5:
  var song = "...";
  var lied = "...";
break;
  case 6:
  var song = "...";
  var lied = "...";
break;
  case 7:
  var song = "...";
  var lied = "...";
break;
  case 8:
  var song = "...";
  var lied = "...";
break;
  case 9:
  var song = "...";
  var lied = "...";
break;
  case 10:
  var song = "...";
  var lied = "...";
break;
  case 11:
  var song = "Deteiname Lied 11";
  var lied = "Titel 11";
break;
  default:
  var song = "Alt. Lied";
  var lied = "Titel Alt.Lied";
break;
}
numberWithSong=new Array(number,lied,song);
return numberWithSong;
}

function changesong() 
{
number=choosen();
while (number[0] == oldNumber) 
{
choosen();
number=choosen();
}
oldNumber=number[0];

return number;
}
und dann im BODY:
Code:
<area id="winamp" shape="rect" coords="178,377,200,396"
          href="javascript:window.alert('Sorry, Scriptfehler');" target="play" alt="" title="Winamp" onclick="playSound=changesong();this.href = 'player.swf?src=http://Musikort/' + playSound[2] + '.mp3&autostart=yes';window.alert('Lade: ' + playSound[1] + ' ');playSound=changesong();window.alert('Nächstes Lied: ' + number[1] + ' ');">
EDIT:
Haber einfach das window.alert in onclick verschoben tut jetzt alles wunderbar, DANKE!

Geändert von Lukas1234567 (01.01.2008 um 14:06 Uhr).
Lukas1234567 ist offline   Mit Zitat antworten
Alt 01.01.2008, 12:52   #6
TP-Junior
 
Registriert seit: Mar 2006
Ort: Berlin
klaus_harrer macht alles soweit korrekt
Hallo

Oh, du bist ja noch ein wirklich blutiger Anfänger;
Du selbst hast onmouseover als event zum abspielen des Songs definiert.
Übernehme den Code und die Lieder werden per onclick abgespielt
Code:
f(number==0)
{
var song = 'Alternatives Lied';
var lied = 'Alternativer Liedtitel';
}
var song = 'Lied ' + number;
var lied = 'Titel von Lied ' + number;
numberWithSong=new Array(number,lied,song);
return numberWithSong;
}

function changesong() 
{
number=choosen();
while (number[0] == oldNumber) 
{
number=choose();
}
oldNumber=number[0];
window.alert('Nächstes Lied: ' + number[1] + ' ');
return number;
}

area shape="rect" coords="178,377,200,396"
          href="#" target="play" alt="" onClick="playSound=changesong();this.href = 'player.swf?src=http://Musikort/' + playSound[2] + '.mp3&autostart=yes';window.alert('Lade: ' + playSound[1] + ' ');">
MfG
Klaus harrer

Geändert von klaus_harrer (01.01.2008 um 13:17 Uhr).
klaus_harrer ist offline   Mit Zitat antworten
Alt 01.01.2008, 13:26   #7
TP-Junior
 
Registriert seit: Mar 2006
Ort: Berlin
klaus_harrer macht alles soweit korrekt
Hallo
Zitat:
Habe selbst noch ein paar fehler rausgenommen das script sieht jetzt so aus:
Der Code von dir ist Fehlerhaft und funktioniert nur zufällig

Das ist lächerlich!!!

MfG
Klaus Harrer

Geändert von klaus_harrer (01.01.2008 um 13:33 Uhr).
klaus_harrer ist offline   Mit Zitat antworten
Alt 01.01.2008, 13:40   #8
TP-Junior
 
Registriert seit: Dec 2007
Lukas1234567 macht alles soweit korrekt
Zitat:
Zitat von klaus_harrer
Du selbst hast onmouseover als event zum abspielen des Songs definiert.
Nein das hast du vermutlich so gemacht,denn in meinem anfangsscript wurde nur die Linkadresse verändert, so das die Musik beim Klicken abgespielt wird

Das kommt von dir:
Zitat:
Zitat von klaus_harrer
Code:
onmouseover="playSound=changesong;this.href = 'player.swf?src=http://Musikort/' + playSound[2] + '.mp3&autostart=yes';"

Zitat:
Zitat von klaus_harrer
Code:
number=choose();function changesong() 
{
number=choosen();
while (number[0] == oldNumber) 
{
number=choose();
}
oldNumber=number[0];
window.alert('Nächstes Lied: ' + number[1] + ' ');
return number;
}
die funktion choose(); gibt es nichtmehr es gibt nur noch choosen();

Ich habe es die ganze Zeit getestet, du nicht.


Zitat:
Zitat von klaus_harrer
Das ist lächerlich!!!
Und was hast du so im Alter von 13 Jahren bzgl. Javascript so zustande gebracht????

Geändert von Lukas1234567 (01.01.2008 um 14:03 Uhr).
Lukas1234567 ist offline   Mit Zitat antworten
Alt 01.01.2008, 14:47   #9
TP-Junior
 
Registriert seit: Mar 2006
Ort: Berlin
klaus_harrer macht alles soweit korrekt
Hallo

Als ich Dreizehn war gab es noch kein Javascript.
Das Script ist so nicht in Ordnung und sollte korrigiert werden.

Du solltest genau erklären was du möchetest b.z.w nicht einfach irgendeine Funktion einfach umbenennen.

MfG
Klaus harrer
klaus_harrer ist offline   Mit Zitat antworten
Alt 01.01.2008, 14:49   #10
TP-Junior
 
Registriert seit: Dec 2007
Lukas1234567 macht alles soweit korrekt
Was bei mir momentan noch nicht tut ist das mit dem Wechseln. Er wechselt immer auf ein anderes als auf das davor angezeigt wurde.
Du hast doch untn geschieben die Funktion choose(); soll choosen(); heißen wegen number


So... jetzt tuts richtig.
Code:
var zahl = Math.ceil(Math.random()*12);
var alt = zahl;
var song = 'Alt. Lied';
var lied = 'Scriptfehler es wird Alt. Lied abgespielt.';
function choose() {
while (zahl == alt) {
var zahl = Math.ceil(Math.random()*12);
switch (zahl) {
  case 1:
  song = "Lied 1";
  lied = "Titel von Lied 1";
break;
  case 2:
  song = "...";
  lied = "...";
break;
  case 3:
  song = "...";
  lied = "...";
break;
  case 4:
  song = "...";
  lied = "..."
break;
  case 5:
  song = "...";
  lied = "...";
break;
  case 6:
  song = "...";
  lied = "...";
break;
  case 7:
  song = "...";
  lied = "...";
break;
  case 8:
  song = "...";
  lied = "...";
break;
  case 9:
  song = "...";
  lied = "...";
break;
  case 10:
  song = "...";
  lied = "...";
break;
  case 11:
  song = "...";
  lied = "...";
break;
  case 12:
  song = "Lied 12";
  lied = "Titel von Lied 12
break;
  default:
  song = "Alt.Lied";
  lied = "Titel von Alt.Lied";
break;
}
}
var alt = zahl;
}
choose();
Code:
<area name="winamp" shape="rect" coords="178,377,200,396"
          href="javascript:window.alert('Sorry, Scriptfehler');" target="play" alt="" title="Winamp" onclick="this.href = 'player.swf?src=http://Musikort/' + song + '.mp3&autostart=yes';window.alert('Lade: ' + lied + ' ');choose();window.alert('Nächstes Lied: ' + lied + ' ');">

Geändert von Lukas1234567 (01.01.2008 um 15:29 Uhr).
Lukas1234567 ist offline   Mit Zitat antworten
Alt 01.01.2008, 16:03   #11
TP-Junior
 
Registriert seit: Mar 2006
Ort: Berlin
klaus_harrer macht alles soweit korrekt
Hallo

Erkläre bitte genau was dieses Script machen soll.
Was soll die Funktion choosen() machen?

Was soll "<area name="winamp" shape="rect" coords="178,377,200,396". . ." auslösen?

MfG
Klaus Harrer
klaus_harrer ist offline   Mit Zitat antworten
Alt 01.01.2008, 16:16   #12
TP-Junior
 
Registriert seit: Dec 2007
Lukas1234567 macht alles soweit korrekt
Am anfang wird definiert:
zahl soll eine zahl zwischen 0 und 1 sein, die aufgerundet wird und dann mal 12 genommen.
alt soll = zahl sein
und song soll Alt. lied sein
und lied soll den Scriptfehler aussprechen beinhaltend den titel vom Alt. Lied.

die funktion choose() soll solange zahl = alt eine zahl zwischen 0 und 1 generieren, aufrunden und dann mal 12 nehmen.
Wenn Zahl = 1 dann soll song = Irgendwas und lied = Irgendwas usw bis 12
wenn die zahl nicht zwischen 1 und 12 liegt, dann soll song = Irgendwas anderes und lied = Irgenwas anderes.
Danach soll alt = zahl sein
und anschliesend soll die function ausgeführt werden.

Dann soll bei:
Code:
<area name="winamp" shape="rect" coords="178,377,200,396"
          href="javascript:window.alert('Sorry, Scriptfehler');" target="play" alt="" title="Winamp" onclick="this.href = 'player.swf?src=http://Musikort/' + song + '.mp3&autostart=yes';window.alert('Lade: ' + lied + ' ');choose();window.alert('Nächstes Lied: ' + lied + ' ');">
Beim klicken soll der link zu player.swf?src=http://Musikort/ mit der einfügung von song .mp3&autostart=yes sein.
und anschließen als alert den Liedtitel (lied) ausgeben die function choose(); ausführen und erneut den Liedtitel ausgeben.
Lukas1234567 ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > HTML Puristen > Javascript
Was hab ich da Falsch gemacht? Eine art random Link Script. Was hab ich da Falsch gemacht? Eine art random Link Script.
« javascript und das <!-- valid? | Javascript bei ebay einbinden »

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 05:23 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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67