Zufalls Frame per javascript
sascha
- java
Hallo giebt es die möglich keit per java script in einen frame bei jeder aktualliesierung eine andere seite an zu zeigen?
Hallo giebt es die möglich keit per java script in einen frame bei jeder aktualliesierung eine andere seite an zu zeigen?
Was ist los? Warum kann mir keiner Helfen? Es ist Wichig!
Hallo Sascha,
Hallo giebt es die möglich keit per java script in einen frame bei jeder aktualliesierung eine andere seite an zu zeigen?
Was ist los? Warum kann mir keiner Helfen? Es ist Wichig!
Das hier ist keine Antwortmaschine und auch kein Support-Dienst, der dazu verpflichtet ist, dir zu helfen. Und wenn du mal eine Stunde auf deine Antwort warten musst, ist das völlig normal. Zumal du dir bei deiner Frage ja auch nicht gerade große Mühe gegeben hast - Das senkt natürlich auch die Motivation der Poster für dich eine Antwort zu finden.
Zu deine Frage: Am einfachsten geht es wohl, indem du ein Array anlegst, indem die URLs der Seiten stehen, die angezeigt werden sollen. Eine Pseudo-Zufallszahl bekommst du mit der Funktion Math.random().
Um nun die Zufallsfunktion auf dein Array anzuwenden, kannst du dieses Konstrukt verwenden:
array[Math.round(Math.random()*array.length)];
array ist in diesem Fall der Name der Array-Variablen mit den URLs.
Schöne Grüße,
Johannes
Jo klar ok sorry aber verstehe gerade nur bahnhof ;) könntest du vieleicht denn concreten code oder so hier posten? währe echt nett danke!
hi,
Jo klar ok sorry aber verstehe gerade nur bahnhof ;)
dann geh doch bitte dem von Johannes geposteten link nach - und wenn noch grundkenntnisse in javascript fehlen, dann besuche bitte http://de.selfhtml.org/javascript/.
könntest du vieleicht denn concreten code oder so hier posten? währe echt nett danke!
dies ist ein forum zur SELBSThilfe, komplette scripte bekommst du hier idR. nicht. ein wenig solltest du schon selber bringen ... wenn du etwas probiert hast, was aber nicht funktioniert, dann zeig's doch mal her, dann können wir dir sicher sagen, woran es liegt.
gruß,
wahsaga
gut ok *g*
So weit binn ich jetzt!
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<script language="javascript>
zl=new Array()
zl[0]="http://www.serfus.de"
zl[1]="http://www.lose-werbung.de"
anzahl=2
function zufall() {
parent.iframe.location=zl[Math.floor(Math.random()*anzahl)]
}
zufall()
</script>
<p> </p>
<p>
<iframe src="" style="border:0px #FFFFFF none;" name="iframe" scrolling="auto" frameborder="1" align=aus marginheight="0px" marginwidth="0px" height="480" width="640"></iframe>
</p>
</body>
</html>
Nun ist mein prob. wie kriege ich das was er oben ausliehst so zu sagen in denn iframe rein oder mache ich erget wie nen fehler ;) naja danke schon mal für die Hilfe!
hi,
function zufall() {
parent.iframe.location=zl[Math.floor(Math.random()*anzahl)]
}
zufall()
zu diesem zeitpunkt gibt es deinen iframe noch gar nicht, weil der weiter unten im dokument steht.
darüber hinaus möchtest du vermutlich nicht das location-objekt überschreiben, sondern nur location.href einen neuen wert zuweisen.
gruß,
wahsaga
hi,
function zufall() {
parent.iframe.location=zl[Math.floor(Math.random()*anzahl)]
}
zufall()zu diesem zeitpunkt gibt es deinen iframe noch gar nicht, weil der weiter unten im dokument steht.
Gut ok das heist das der iframe über denn script sein muss wenn ich das richtig sehe oder?
darüber hinaus möchtest du vermutlich nicht das location-objekt überschreiben, sondern nur location.href einen neuen wert zuweisen.
jep genau allso hatte ich so gedacht was muss ich da für ändern wenn ich ihm nur nen neuen wert geben will?
gruß,
wahsaga
Gut ok und bei iframe musste denn es scr="location.href" heißen oder?
hi,
Gut ok das heist das der iframe über denn script sein muss wenn ich das richtig sehe oder?
nein, nicht unbdeingt.
mittels eines eventhandler wie onLoad im body wäre es ja auch möglich, eine javascript-funktion erst dann auszuführen, wenn das rendern der seite abgeschlossen ist.
jep genau allso hatte ich so gedacht was muss ich da für ändern wenn ich ihm nur nen neuen wert geben will?
na dann heißt die syntax logischerweise location.href = "neuer wert";
Gut ok und bei iframe musste denn es scr="location.href" heißen oder?
nur, wenn du als startseite eine ressource namens location.href in den iframe hineinladen willst. gibt es eine solche im gleichen verzeichnis?
wenn nicht, würde sich evtl. about:blank als startseite für den iframe empfehlen, wenn die quelle ja eh sofort danach geändert werden soll.
gruß,
wahsaga
Allso sollte es so gehen?"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<iframe src="about:blank" style="border:0px #FFFFFF none;" name="iframe" scrolling="auto" frameborder="1" align=aus marginheight="0px" marginwidth="0px" height="480" width="640"></iframe>
<script language="javascript>
zl=new Array()
zl[0]="http://www.serfus.de"
zl[1]="http://www.lose-werbung.de"
anzahl=2
function zufall() {
parent.iframe.location.href=zl[Math.floor(Math.random()*anzahl)]
}
zufall()
</script>
<p> </p>
<p>
</p>
</body>
</html>
oder habe ich noch nen denk fehler?
hi,
Allso sollte es so gehen?"
sag du es uns, ob es "geht".
und wenn nicht, liefere uns bitte eine aussagekräftigere problembeschreibung als nur den quellcode ohne weiteren kommentar.
gruß,
wahsaga
http://www.serfus.de/java.html
Geht aber immer noch... lasgoogle sagt mir keine fehler!
Hallo Sascha,
http://www.serfus.de/java.html
</faq/#Q-19>
Geht aber immer noch... lasgoogle sagt mir keine fehler!
Dafür aber der Validator: [http://validator.w3.org/check?uri=http%3A%2F%2Fwww.serfus.de%2Fjava.html]. Du solltest deine Seiten auf jeden Fall immer damit überprüfen, wenn irgendetwas nicht so funktioniert wie es sollte. Dein JavaScript enthält aber noch ein paar kleine Fehler:
script language="javascript>
^
Hier fehlt, wie der Validator schon angemeckert hat, das schließende Anführungszeichen
zl=new Array()
zl[0]="http://www.serfus.de
^
Auch hier fehlen wieder Anführungszeichen.
zl[1]="http://www.lose-werbung.de"
anzahl=2
anzahl müsste in diesem Fall den Wert 1 haben. Das war aber mein Fehler, da hatte ich nicht daran gedacht. Es ist aber unnötig, für anzahl eine Konstante zu verwenden. Der Ausdruck zl.length - 1 liefert das gleiche Ergebnis und es macht nichts aus, wenn du dem Array noch beliebig viele weitere Elemente hinzufügst.
function zufall() {
Die Funktionsanweisung kannst du weglassen, die ist in diesem Falle überflüssig.
parent.iframe.location.href=zl[Math.floor(Math.random()*anzahl)]
~~~~~
Hier solltest du stattdessen die Methode Math.round() verwenden.
}
zufall()</script>
^
Das '>' ist zu viel.
Das Beispiel sollte jetzt funktionieren. Allerdings nur wenn der Besucher Javascript aktiviert hat. Wenn du auch die Besucher ohne Javascript erreichen willst, musst du dich mit einer serverseitigen Technik befassen. Beispiele dafür wären z.B. CGI mit Perl oder PHP.
Ich würde dir übrigens vorschlagen, dich mal nach einem Editor mit Syntax-hervorhebung umzuschauen. Mit so einer Hilfe, wären dir die meisten Fehler schnell von alleine aufgefallen.
Und noch ein kleiner Hinweis: Es ist sauberer Programmierstil, jede Anweisung mit einem Semikolon ';' abzuschließen.
Schöne Grüße,
Johannes
Hallo,
parent.iframe.location.href=zl[Math.floor(Math.random()*anzahl)]
~~~~~
Hier solltest du stattdessen die Methode Math.round() verwenden.
ich würde in diesem Zusammenhang bei floor bleiben. Solange nur 0 oder 1 gewünscht wird, ist es egal, aber bei größeren Bereichen gibt es keine Gleichverteilung mehr:
Math.random()*anzahl liefert eine Zahl 0<z<anzahl. Math.floor bildet dann ein Intervall der Länge 1 auf die erwünschte ganze Zahl ab:
0 bis 0.9Periode -> 0
1 bis 1.9Periode -> 1
usw.
bei Math.round sieht es aber folgendermaßen aus:
0 bis 0.49Periode -> 0
0.5 bis 1.49Periode -> 1
usw.
d.h. die kleinste und die größte Zahl kommen nur mit der halben Wahrscheinlichkeit vor.
Gruß, Jürgen
Hallo Jürgen,
ich würde in diesem Zusammenhang bei floor bleiben. Solange nur 0 oder 1 gewünscht wird, ist es egal, aber bei größeren Bereichen gibt es keine Gleichverteilung mehr:
Math.random()*anzahl liefert eine Zahl 0<z<anzahl. Math.floor bildet dann ein Intervall der Länge 1 auf die erwünschte ganze Zahl ab:
0 bis 0.9Periode -> 0
1 bis 1.9Periode -> 1
usw.
bei Math.round sieht es aber folgendermaßen aus:
0 bis 0.49Periode -> 0
0.5 bis 1.49Periode -> 1
usw.
d.h. die kleinste und die größte Zahl kommen nur mit der halben Wahrscheinlichkeit vor.
Stimmt, da hast du recht. Dann muss anzahl aber natürlich gleich zl.length sein.
Schöne Grüße,
Johannes