Witam, rozwiązałem zadania z rzeczonego odcinka kursu JS :) Co myślicie o takich rozwiązaniach? Czy można to zrobić lepiej? Proszę o konstruktywną krytykę :)
#1 Dlaczego dla pustego pola wyświetla się wartość zero?
Ponieważ skrypt w warunku else if (liczba==0) traktuje 0 nie jako liczbę, lecz jako zero, nic, pustkę, nicość :D
Rozwiązanie? Sprawić aby skrypt traktował 0 jako liczbę:
else if (liczba=="0") document.getElementById("wynik").innerHTML="Wpisano zero";
else if (liczba==0) document.getElementById("wynik").innerHTML="";
#2 Jak sprawić, aby skrypt zachował się poprawnie w przyadku innej kolejności liczb oraz gdy użytkownik nie wpisze poprawnej wartośći?
Aby skrypt liczył poprawnie w innej kolejności wystarczy dodać kolejną pętlę liczącą w drugą stronę:
else if (liczba1>liczba2)
{
for(i=liczba1; i>=liczba2; i--)
{ ciag=ciag+i+" "; }
document.getElementById("wynik").innerHTML=ciag;
}
else if (liczba1<liczba2)
{
for(i=liczba1; i<=liczba2; i++)
{ ciag=ciag+i+" "; }
document.getElementById("wynik").innerHTML=ciag;
}
A jeśli użytkownik wpisze nieporawne wartośći należy podać szereg innych warunków:
if (liczba1==0 && liczba2==0) document.getElementById("wynik").innerHTML="";
else if (liczba1==0 || liczba2==0) document.getElementById("wynik").innerHTML="Podaj dwie liczby!";
else if ( isNaN(liczba1) && isNaN(liczba2) ) document.getElementById("wynik").innerHTML="W obu polach nie wpisano liczby!";
else if ( isNaN(liczba1) ) document.getElementById("wynik").innerHTML="Do lewego pola nie wpisano liczby!";
else if ( isNaN(liczba2) ) document.getElementById("wynik").innerHTML="Do prawego pola nie wpisano liczby!";
else if (liczba1==liczba2) document.getElementById("wynik").innerHTML="Podano takie same liczby!";
cały skrypt tutaj: http://wklej.org/id/1752972/ żeby już nie zaśmiecać kodem w poście.
#3 Jakie wady ma slajder?
W funkcji ustawslajd() przypisywano argumentowi funkcji numer aktualnego slajdu, co powoduje to, że który numer nie klikniemy pokaże nam się slajd kolejny.
Naprawiłem to w ten sposób, że do rzeczonej funkcji dodałem switcha, który zmienia nam numer slajdu do wyświetlenia w zależności od tego co prześlemy funkcji (zmienna nrslajdu). Cały kod wygląda tak:
<!DOCTYPE HTML>
<html lang="pl">
<head>
<meta charset='utf-8' />
<meta name='description' content=' ' />
<meta name='keywords' content=' ' />
<meta http-equiv='X-UA-Compatible' content='IE-edge,chrome=1' />
<title>slajder</title>
<style>
body
{ background-color:#222; font-size:24px; color:#eee; margin:0; padding:0;}
#slajder img
{ width:600px; height:400px; background-size:100% 100%; }
div {float:left;}
</style>
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script type="text/javascript">
var numer=0;
var timer1 = 0;
var timer2 = 0;
function fadeout()
{ $("#slajder").fadeOut(500); }
function ustawslajd(nrslajdu)
{
clearTimeout(timer1);
clearTimeout(timer2);
switch(nrslajdu)
{
case 1: numer=0; break;
case 2: numer=1; break;
case 3: numer=2; break;
case 4: numer=3; break;
case 5: numer=4; break;
}
fadeout();
setTimeout("zmiana()", 500);
}
function zmiana()
{
numer++;
if (numer>5) numer=1;
$("#slajder").fadeIn(500);
var plik="<img src='slajd"+numer+".jpg'> </img>"
document.getElementById("slajder").innerHTML=plik;
timer1 = setTimeout("fadeout()",4500);
timer2 = setTimeout("zmiana()", 5000);
}
</script>
</head>
<body onload="zmiana()">
<div id="kropka1" onclick="ustawslajd(1)"><img src="kropa.png"></img></div>
<div id="kropka2" onclick="ustawslajd(2)"><img src="kropa.png"></img></div>
<div id="kropka3" onclick="ustawslajd(3)"><img src="kropa.png"></img></div>
<div id="kropka4" onclick="ustawslajd(4)"><img src="kropa.png"></img></div>
<div id="kropka5" onclick="ustawslajd(5)"><img src="kropa.png"></img></div>
<div style="clear:both;"></div>
<div id="slajder"></div>
</body>
</html>
Co sądzicie o takich rozwiązaniach. Co i jak możnaby zrobić lepiej? :)