Probelme mit zufall Javascript und bild

M

My-Li

Guest
Hallo ich hoffe ihr könnt mir weiterhelfen.

Ich suche ein Javascript der aus 22 Bildern 3 zufällige anzeigt !

Od. wie ich das mit diesem Script hinbekomme! Das ich anstadt der zahlen Bilder oder Texte per zufall erscheind.

rolleyes.gif


<p align="center"><!--

====================================
Anwendung: Zufallskarten - Generator
====================================

-->
<script language=JavaScript type=text/javascript>
<!--
// === Ersatzfunktionen fuer aeltere Browserversionen ===
function zufallskarten()
{
document.open("text/html")
document.write("<P>Sie benötigen für diese Funktion einen aktuelleren Browser.</P>")
document.close()
}

//-->
</SCRIPT>

</p>
<p align="center"><script language="JavaScript" type=text/javascript>
<!--

// === Parameter ===

var karten_gesamt = 22 // Gesamtzahl der karten
var karten_auswahl = 3 // zufaellige Auswahl

// === Hilfsfunktionen (allgemein) ===

// numerischer Vergleich
function numcmp(a,
cool.gif

{
if(a <
cool.gif

return -1
if(a >
cool.gif

return 1
return 0
}

// === Generierungsfunktionen ==

// Ermittlung der Zufallskarten
// anzahl_karten paarweise verschiedene karten zwischen min_zahl und max_zahl
function zufallskarten(reihen)
{
// Variablen
var kugeln = new Array()
var karten = new Array()
var breite = Math.floor(100 / karten_auswahl)
var i, j

function generiere_karten()
{
// Fuer Browser mir fehlerhafter Definition von splice
function aussortieren(pos)
{
var k
for(k = pos + 1; k < kugeln.length; k++)
kugeln[k - 1] = kugeln[k]
}

var nummer = 0

// Kugeln vorbesetzen
for(i = 1; i < karten_gesamt + 1; i++)
kugeln = i

// karten ermitteln
for(i = 0; i < karten_auswahl; i++)
{
// Position innerhalb der verbliebenen Kugeln
nummer = Math.floor(Math.random() * (karten_gesamt - i) + 1)

// Zahl merken
karten = kugeln[nummer]

// Kugel entfernen
if(kugeln.splice)
kugeln.splice(nummer, 1)
else
aussortieren(nummer)
}


}

// karten ausgeben
document.open("text/html")
document.writeln("<DIV ALIGN=CENTER>")
document.writeln("<TABLE BORDER=1 CELLSPACING=5 CELLPADDING=8 BGCOLOR=\"black\">")
for(j = 0; j < (reihen ? reihen : 1); j++)
{
generiere_karten()
document.writeln("<TR ALIGN=CENTER VALIGN=CENTER>")
for(i = 0; i < karten_auswahl; i++)
document.writeln("<TD WIDTH=\"" + String(breite) + "%\">" + String(karten).fontsize(6).bold().fixed() + "</TD>")
document.writeln("</TR>")
}
document.writeln("</TABLE>")
document.writeln("</DIV>")
document.close()
}
//-->
</SCRIPT>

<script language=JavaScript type=text/javascript>
<!--
// === Ausgabe ===
zufallskarten(Number(location.search.substring(1)))
//-->
</SCRIPT>




 
Hallo,

karten ist doch numerisch. dann kannst u doch einfach in die Schleife eins der 22 bilder reinsetzen. allerdings brauchen die Bilder dann ein numerischen Titel:
1.jpg, 2.jpg,...22.jpg

for(i = 0; i < karten_auswahl; i++)
document.writeln("<TD WIDTH=\"" + String(breite) + "%\"><img alt="" align =center" src='/"+karten+".jpg' id="+i+" name="+i+"></TD>")

oder hab ich Deine Frage falsch verstanden?

Jetzt öffnest Du jedesmal ein neues Fenster. Schöner wärs, wenn das Fenster offen bleibt, und die Bildurls über das parent window zugewiesen werden.








 
Hallo tuemmel,

Die frage war so:- anstadt der Zahlen je. ein Bild!

Danke für die rasche Antwort. Konnte es nicht testen da mir das HTLM programm ein fehler im script meledet zeile 107 /spalte 67 ")" erwartet habe schon ein bisschen rumprobiert habe es aber nicht hinbekommen.

Könntes du mir vieleicht noch sagen wo der fehler liegt.

Ich bedanke mich schonmal für die Hilfe.

Bye My-Li
CODE <p align="center"><!--

====================================
Anwendung: Zufallskarten - Generator
====================================

-->
<script language=JavaScript type=text/javascript>
<!--
// === Ersatzfunktionen fuer aeltere Browserversionen ===
function zufallskarten()
{
document.open("text/html")
document.write("<P>Sie benötigen für diese Funktion einen aktuelleren Browser.</P>")
document.close()
}

//-->
</SCRIPT>

</p>
<p align="center"><script language="JavaScript" type=text/javascript>
<!--

// === Parameter ===

var karten_gesamt = 22 // Gesamtzahl der karten
var karten_auswahl = 3 // zufaellige Auswahl

// === Hilfsfunktionen (allgemein) ===

// numerischer Vergleich
function numcmp(a, b)
{
if(a < b)
return -1
if(a > b)
return 1
return 0
}

// === Generierungsfunktionen ==

// Ermittlung der Zufallskarten
// anzahl_karten paarweise verschiedene karten zwischen min_zahl und max_zahl
function zufallskarten(reihen)
{
// Variablen
var kugeln = new Array()
var karten = new Array()
var breite = Math.floor(100 / karten_auswahl)
var i, j

[COLOR=red]for(i = 0; i < karten_auswahl; i++)
document.writeln("<TD WIDTH=\"" + String(breite) + "%\"><img alt="" align =center" src='/"+karten[i]+".jpg' id="+i+"
name="+i+"></TD>")[/COLOR]

function generiere_karten()
{
// Fuer Browser mir fehlerhafter Definition von splice
function aussortieren(pos)
{
var k
for(k = pos + 1; k < kugeln.length; k++)
kugeln[k - 1] = kugeln[k]
}

var nummer = 0

// Kugeln vorbesetzen
for(i = 1; i < karten_gesamt + 1; i++)
kugeln[i] = i

// karten ermitteln
for(i = 0; i < karten_auswahl; i++)
{
// Position innerhalb der verbliebenen Kugeln
nummer = Math.floor(Math.random() * (karten_gesamt - i) + 1)

// Zahl merken
karten[i] = kugeln[nummer]

// Kugel entfernen
if(kugeln.splice)
kugeln.splice(nummer, 1)
else
aussortieren(nummer)
}


}

// karten ausgeben
document.open("text/html")
document.writeln("<DIV ALIGN=CENTER>")
document.writeln("<TABLE BORDER=1 CELLSPACING=5 CELLPADDING=8 BGCOLOR=\"black\">")
for(j = 0; j < (reihen ? reihen : 1); j++)
{
generiere_karten()
document.writeln("<TR ALIGN=CENTER VALIGN=CENTER>")


for(i = 0; i < karten_auswahl; i++)
document.writeln("<TD WIDTH=\"" + String(breite) + "%\"><img alt="" align =center" src='/"+karten[i]+".jpg' id="+i+"
name="+i+"></TD>")

document.writeln("</TR>")
}
document.writeln("</TABLE>")
document.writeln("</DIV>")
document.close()
}
//-->
</SCRIPT>

<script language=JavaScript type=text/javascript>
<!--
// === Ausgabe ===
zufallskarten(Number(location.search.substring(1)))
//-->
</SCRIPT>
 
versuch mal mit firefox oder nn in der javascriptconsole. dort ist der fehler näher beschrieben.
 
bei <img alt="" align = center" fehlt ein "

Gruss
 
QUOTE (Tuemmel @ So 15.5.2005, 21:53) bei <img alt="" align = center" fehlt ein "

Gruss

Sorry,
Versuch doch mal so:

document.writeln('<TD WIDTH="' + String(breite) + '%"><img alt="" align ="center" src="'+karten+'.jpg" id="'+i+'" name="'+i+'"></TD>')

Auf id und name kannst Du auch verzichten, wenn die bilder keine weitere Rolle spielen.
Auf der Seite selbst würd ich das rechte Bild, dass beim Mouseover erscheint, etwas weiter rechts positionieren.












 
1000mal Danke, funktioniert gut der script zusatz!

Noch ein schönen Pfingsmontag.

Danke, My-Li
 
hallo nochmal, habe festgeställt es klappt nicht so wie ich es mir gedacht habe. Der script ist gut aber meine idee nicht.
huh.gif


geht es eigentlich, zu jedem bild noch den passenden text anzeigen zu lassen? Und die bilder frei und getränt zu positionieren? Position wär nicht ganz so wichtig aber das mit dem text!

Bye My-Li
 
Warum benutzt Du nur so ein riesenkompliziertes script für so eine einfache Funktion?

Die Karten (Kugeln) müssen doch nicht aus dem array entfernt werden, wenn die array elemente nicht weiter benutzt werden,
und bei jedem Reload wird das Kugeln array sowieso neu initialisiert.

Für die Text müsstest ein array mit den Texten schreiben und jeder Karte ein array-element zuordnen.
Schau Dir doch mal Dein script an, da sind schon ziemlich viele arrays.

Für die Positionierung schau mal bei:
http://www.devguru.com/technologies/dhtml/...lementbyid.html
http://www.devguru.com/technologies/css/qu.../css_index.html
http://www.devguru.com/Technologies/html/q...html_table.html

Für Anfänger gibt es das immer noch besonders beliebte und aufpolierte selfhtml, welches ich persönich aber nicht mag.

Viel Spass
cool.gif

 
Das mit dem Text habe ich jetzt, aber wie erstelle ich für jedes bild ein array element?

wenn ich bei zahlen merken das in rot zuschreibe zeigt er mir die passenden bilder zahl an aber wie bekomme ich es mit einemfreien text an.

// Zahl merken
karten = kugeln[nummer]
text = karten

QUOTE <!--

function zufallskarten()
{
document.open("text/html")
document.write("<P>Sie benötigen für diese Funktion einen aktuelleren Browser.</P>")
document.close()
}

var karten_gesamt = 7 // Gesamtzahl der karten
var karten_auswahl = 3 // zufaellige Auswahl

// === Hilfsfunktionen (allgemein) ===

// numerischer Vergleich
function numcmp(a,
cool.gif

{
if(a <b)
return -1
if(a >b)
return 1
return 0
}

// === Generierungsfunktionen ==

// Ermittlung der Zufallskarten
// anzahl_karten paarweise verschiedene karten zwischen min_zahl und max_zahl
function zufallskarten(reihen)
{
// Variablen
var kugeln = new Array()
var karten = new Array()
var breite = Math.floor(100 / karten_auswahl)
var i, j


function generiere_karten()
{
// Fuer Browser mir fehlerhafter Definition von splice
function aussortieren(pos)
{
var k
for(k = pos + 1; k < kugeln.length; k++)
kugeln[k - 1] = kugeln[k]
}

var nummer = 0
var random_number = nummer

// Kugeln vorbesetzen
for(i = 1; i < karten_gesamt + 1; i++)
kugeln = i

// karten ermitteln
for(i = 0; i < karten_auswahl; i++)
{
// Position innerhalb der verbliebenen Kugeln
nummer = Math.floor(Math.random() * (karten_gesamt - i) + 1)


// Zahl merken
karten = kugeln[nummer]

// Kugel entfernen
if(kugeln.splice)
kugeln.splice(nummer, 1)
else
aussortieren(nummer)
}


}


// Texte festlegen
text = new Array();
text[0] = "Text11";
text[1] = "Text22";
text[2] = "Text33";
text[3] = "Text44";
text[4] = "Text55";
text[5] = "Text66";
text[6] = "Text77";
text[7] = "Text88";
// ...

// karten ausgeben
document.open("text/html")
document.writeln("<DIV ALIGN=CENTER>")
document.writeln("<TABLE BORDER=1 CELLSPACING=8 CELLPADDING=18 BGCOLOR=\"black\">")
for(j = 0; j < (reihen ? reihen : 1); j++)
{
generiere_karten()
document.writeln("<TR ALIGN=CENTER VALIGN=CENTER>")


for(i = 0; i < karten_auswahl; i++)
document.writeln('<TD WIDTH="' + String(breite) + '%"><img alt="text" width="80" height="150"align ="center" src="tarotbilder/images'+karten+'.gif" id="'+i+'" name="'+i+'"><br>'+text+'</TD>');
document.writeln("</TR>")
}
document.writeln("</TABLE>")
document.writeln("</DIV>")
document.close()
}




 
Bei der Ausgabe hat i die Werte 0, 1 oder 2.

Vielleicht weist Du dem Text array auch diese Werten zu.
text=text[nummer], was aber zu Fehlern führt.
z.B. kugeln[nummer]==1

text=text[nummer] // i=0
//kugeln[nummer]==0
text=text[nummer]//i=1 und schon kriegst du einen falschen Text. tz,tz

probier doch eher mal in der Ausabe sowas wie <br>'+text[karten]+'

nun warum splict Du die bereits gelegten Elemente raus?
 
so eine kleine änderung aber mit großer wirkung.

Es funktionier gut, danke nochmal.
wink.gif


Bye My-Li
 
Zurück
Oben