Autor Zpráva
davecz
Profil
Dobrý den, potřeboval bych poradit, jak náhodně vygenerovat stránku která se nachází s ostatníma ve stejné složce.
Takže se v menu po kliknutí na odkaz Písničky vybere jedna ze stránek watanay.html, buraky.html, stanky.html...
Díky moc
xerno
Profil
Když javascriptem, tak bych to řešil takto (v phpku by to bylo obdobný, akorát použil bys funkci mt_rand): (předpokládejme, že těch souborů je ve složce 10)

<script type=text/javascript>
var nahoda = Math.round(Math.random()*3)
if (nahoda == 1) var finito = "watanay";
if (nahoda == 2) var finito = "buraky";
...
if (nahoda == 10) var finito = "stanky";
document.write("<a href=" + finito + ".html>Písničky</a>");
</script>
Joker
Profil
davecz
Uložit si stránky do pole, potom vybrat náhodné číslo od 0 do (počet prvků pole - 1) a na adresu s tím indexem přejít.
Joker
Profil
xerno
if (nahoda == 1) var finito = "watanay";
if (nahoda == 2) var finito = "buraky";
...
if (nahoda == 10) var finito = "stanky";

No fuj :-)
xerno
Profil
Joker
nejjednoduší řešení a nejlepší začátek pro ty co neznaj javascript, proč myslíš že sem tam dal „<script type=text/javascript>“ ?? XD to cos mu poradil ty mu asi moc nepomohlo...
habendorf
Profil
xerno

Bezva řešení třeba pro 2000 stránek ;o)
davecz
Profil
díky moc
xerno
Profil
habendorf
Myslim že on jich tolik nemá... a kdyby jo, tak ať si to radši udělá přes databázi, ne? :) a kdo říkal že je to řešení bezva? já už radil, tak mu poraď i ty ;)
habendorf
Profil
xerno

OK :o)

tak mu poraď i ty ;)
Dělal bych to stejně jako Joker.
xerno
Profil
to cos mu poradil ty mu asi moc nepomohlo...“ :) XD kdybys neuměl javascript, tak ti Jokerovo řešení moc nepomůže... vypiš to daveczvi a třeba tahle diskuze nebude jen plkání :)
davecz
Profil
habendorf
a přes pole by to bylo jak?
habendorf
Profil
<script> 
var songs= new Array("watanay","byraky","stanky");
index =  Math.floor(Math.random()*songs.length);
</script> 

<a href="" id="link">Písničky</a>

<script> 
document.getElementById('link').href=songs[index] + ".html";
</script> 


Nějak takhle, píšu to z hlavy, netestuju.
davecz
Profil
ještě bych měl jeden hloupej dotaz...jaktože se mně jednou za x pokusů stane že to tu stránku nemůže nalézt?
xerno
Profil
davecz
to může mít víc příčin... cos nakonec dal do toho scriptu?
davecz
Profil
<script>
var songs= new Array("watanay","byraky","stanky");
index = Math.floor(Math.random()*songs.length);
</script>

<a href="" id="link">Písničky</a>

<script>
document.getElementById('link').href=songs[index] + ".html";
</script>
habendorf
Profil
Protože tam mám překlep byraky -> buraky. To sis mohl najít sám :o)
davecz
Profil
:) to jsem našel, ale i tak mně to háže chyby. A to u obou skriptů-jak u toho s proměnnou "finito", tak s tímhle
habendorf
Profil
davecz

Není možná, chyba musí být mimo ten skript. Někam to celé nahraj a dej sem link na živou stránku, jinak se nehnem.

EDIT na tvůj EDIT: tím spíš je chyba jinde.
davecz
Profil
Dík už to funguje. Zkusil jsem to na druhým počítači a jede to normálně. Tak promiň za ztrátu času:)
EDIT: nene přípony jsou v pořádku. Tohle se mně ještě nestalo...
habendorf
Profil
Jen střelím od boku - mají všechny stránky skutečně koncovku html? Nemá některá třeba jen htm? Jsou všechny názvy stránek skutečně malými písmeny?

EDIT: Tak nic, fajn.
davecz
Profil
šlo by nějak zařídit aby se po znovukliknutí na ten odkaz zobrazila náhodně nová stránka?
Joker
Profil
xerno
nejjednoduší řešení a nejlepší začátek pro ty co neznaj javascript, proč myslíš že sem tam dal „<script type=text/javascript>“ ?? XD to cos mu poradil ty mu asi moc nepomohlo...
Nesouhlasím. Že je někdo začátečník ještě neznamená, že se to musí naučit špatně. Právě naopak je tím spíš potřeba mu vysvětlit správné řešení.
A
if (nahoda == 1) var finito = "watanay";
if (nahoda == 2) var finito = "buraky";
...

je s prominutím prasárna. Minimálně povědomí o konstrukci switch-case patří mezi základní znalosti programování, a to nejen v Javascriptu.

davecz
šlo by nějak zařídit aby se po znovukliknutí na ten odkaz zobrazila náhodně nová stránka?
Pokud se při každém kliknutí vygeneruje nové náhodné číslo...
Takže bych to uzavřel do funkce, třeba:
function nahodnaStranka(){
  var songs= new Array("watanay","byraky","stanky");
  var index =  Math.floor(Math.random()*songs.length);
  window.location.href = songs[index];
}

a odkaz:
<a href="javascript:nahodnaStranka()">odkaz</a>
Chamurappi
Profil
Reaguji na Jokera:
Správné řešení je v tomto případě pole, jak uvedl habendorf Joker.
Osobně používám switch-case v JavaScriptu jen výjimečně. V podstatě nikdy.
davecz
Profil
to jsem zkoušel, ale píše mně to že songs není definováno
celkově mám teď tohle:
<script> 
function nahodnaStranka(){
  var songs= new Array("watanay","byraky","stanky");
  var index =  Math.floor(Math.random()*songs.length);
  window.location.href = songs[index];
} 
</script> 

<a href="javascript:nahodnaStranka()" id="link" target="ram">Písničky</a> 

<script> 
document.getElementById('link').href=songs[index] + ".html"; 
</script>
 </div></div>
 <iframe name="ram" align="top" width="600px" height="500px" 
 scrolling="no" noresize="noresize" frameborder="0" src="ram.html"></iframe>



ale pořád to nejede. Mějte se mnou prosím trpělivost:)
Joker
Profil
Chamurappi
Správné řešení je v tomto případě pole, jak uvedl habendorf.
To s polem jsem psal já! :o)

davecz
to jsem zkoušel, ale píše mně to že songs není definováno
Pokud je proměnná songs definovaná uvnitř funkce, tak platí jen uvnitř té funkce.
Nicméně když je to napsané takhle, tak následující část už tam nemá být:
<script> 
document.getElementById('link').href=songs[index] + ".html"; 
</script>
davecz
Profil
nejede to:)..nevím.
Neznáte nějakou stránku kde by ten skript byl už udělanej?

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: