[ Be_B_R @ 02.06.2011. 20:00 ] @
Moze li neko molim vas da mi detaljno objasni sledeci primer:

Code (html):

<!DOCTYPE HTML PUBLIC "-//W3C//Dtd HTML 4.0 transitional//EN">
<html>
<head>
<TITLE>DAN ROÐENJA</TITLE>
 
<script LANGUAGE="JavaScript">
<!--
function MakeArray(n) {
  this.length = n;
  for (var i = 1; i <=n; i++) {
    this[i] = 0;
  }
}

// definiranje dana u tjednu
nazivDana = new MakeArray(7);
nazivDana[0] = "Subota"
nazivDana[1] = "Nedjelja"
nazivDana[2] = "Ponedjeljak"
nazivDana[3] = "Utorak"
nazivDana[4] = "Srijeda"
nazivDana[5] = "Èetvrtak"
nazivDana[6] = "Petak"

// definiranje mjeseca
nazivMjeseca = new MakeArray(12);
nazivMjeseca[1] = "Sijeèanj"
nazivMjeseca[2] = "Veljaèa"
nazivMjeseca[3] = "Ožujak"
nazivMjeseca[4] = "Travanj"
nazivMjeseca[5] = "Svibanj"
nazivMjeseca[6] = "Lipanj"
nazivMjeseca[7] = "Srpanju"
nazivMjeseca[8] = "Kolovoz"
nazivMjeseca[9] = "Rujan"
nazivMjeseca[10] = "Listopad"
nazivMjeseca[11] = "Studeni"
nazivMjeseca[12] = "Prosinac"

// funkcija za izraèun dana u tjednu
function izracunajDanUtjednu(mojaForma) {
  var xDan = parseInt(mojaForma.dan.value, 10)
  if ((xDan < 0) || (xDan > 31)) {
     alert("Dan je izvan opsega!")
  }
  var xMjesec = parseInt(mojaForma.mjesec.value, 10)
  if ((xMjesec < 0) || (xMjesec > 12)) {
     alert("Mjesec je izvan opsega!")
  }  
  var xMjesecx = parseInt(mojaForma.mjesec.value, 10)
  var xGodina = parseInt(mojaForma.godina.value, 10)
  if (xGodina < 1900) {
     alert("Godina je izvan opsega!")
  }
  if (xMjesec == 1) {
     xMjesecx = 13;
     xGodina = xGodina-1
  }
  if (xMjesec == 2) {
     xMjesecx = 14;
     xGodina = xGodina-1
  }
  var x01 = parseInt(((xMjesecx+1)*3)/5, 10)
  var x02 = parseInt(xGodina/4, 10)
  var x03 = parseInt(xGodina/100, 10)
  var x04 = parseInt(xGodina/400, 10)
  var x05 = xDan+(xMjesecx*2)+x01+xGodina+x02-x03+x04+2
  var x06 = parseInt(x05/7, 10)
  var x07 = x05-(x06*7)
  mojaForma.datumRodjenja.value = nazivMjeseca[xMjesec]+" "+mojaForma.dan.value +", "+mojaForma.godina.value
  mojaForma.danRodjenja.value = nazivDana[x07]
}  

//  -->
</script>
 
</HEAD>
 
<BODY>
 
<h3>KOJEG DANA U TJEDNU STE ROÐENI?</h3>
 
<p><B>Upišite datum vašeg roðenja</b></p>
 
<form>
  <p>Dan roðenja (1-31): <input TYPE="text" NAME="dan" SIZE="2"> </p>
  <p>Mjesec roðenja (1-12): <input TYPE="text" NAME="mjesec" SIZE="2"> </p>
  <p>Godina roðenja (npr. 1980): <input TYPE="text" NAME="godina" SIZE="4"> </p>
  <p><input TYPE="button" VALUE="Izraèunaj" ONCLICK="izracunajDanUtjednu(this.form)">
     <input TYPE="reset" VALUE="Poništi"> </p>
  <p>Datum roðenja: <input TYPE="text" NAME="datumRodjenja" SIZE="18"> </p>
  <p>Dan u tjednu: <input TYPE="text" NAME="danRodjenja" SIZE="18"> </p>

</form>
 


PS:Hitno je i hvala unapred..


[moderator: ubačeni [code][/code] tagovi]

[Ovu poruku je menjao Aleksandar Ružičić dana 03.06.2011. u 00:35 GMT+1]
[ Br@nkoR @ 03.06.2011. 12:01 ] @
Šta nije jasno u kodu?

Klikom na dugme izračunaj poziva se JavaScript funkcija izracunajDanUtjednu().
Zatim npr
Code:

  var xDan = parseInt(mojaForma.dan.value, 10)
  if ((xDan < 0) || (xDan > 31)) {
    alert("Dan je izvan opsega!")
  }

Uzima se vrednost za polje sa nazivom dan i pošto se očekuje da je vrednost polja celi broj (celobrojna vrednost) koristi se parseInt, vrednost koju vraća osobina value je string, drugi argument funkcije parseInt je da se osigura, odnosno ukloni, ukoliko neko unese dan koji na prvom mestu ima nulu (0), npr. "09", da to parseInt funkcija ne bi videla kao oktalnu vrednost.
Pomoću if petlje se ispituje da li je uneti dan u odgovarajućem opsegu 1-31

Slično sve ovo se radi i za polja mjesec i godina, da ne pišem duplo samo su različiti opsezi.

Zatim se na osnovu unetih vrednosti računa dan u nedelji. Pogledaj Zeller's congruence a takođe možeš pogledati i Doomsday algoritam, ili Calculating the day of the week, možda i grešim nisam baš detaljno gledao, ispraviće me neko.

Ovo bi moglo možda i jednostavnije da se računa, pomoću već ugrađenih mogućnosti u Date objektu, nešto kao

Code:
new Date(godinaRođenja, mececRođenjaOd_0_Do_11, danRodjena).getDay()

pri čemu se dobija vrednost od 0 do 6, pri čemu je 0 Nedelja a 6 Subota.