Tak jak pisałem wcześniej w komentarzu, problem był z porównaniem pobranych wartości, tzn liczba1 i liczba2.
Najprawdopodobniej były one porównywane jako ciąg znaków, dlatego np. według skryptu 29 < 7.
Dlatego dodałem przy zmiennych liczba1, liczba2 funckcję parseInt(), która zapisuje do zmiennej wartość w postaci liczby. Więcej o funkcji tutaj: http://www.w3schools.com/jsref/jsref_parseint.asp
Zmieniłem dodatkowo pola na typ number.
<!DOCTYPE HTML>
<html lang="pl">
<head>
<meta charset="utf-8"/>
</head>
<body>
<fieldset style="width:500px">
<input type="number" id="pole1" value="0" />
<input type="number" id="pole2" value="0" />
<input type="submit" value="Wypisz" onclick="wypisz()"/>
<div id="wynik"></div>
<div id="aa"></div>
<div id="bb"></div>
</fieldset>
<script type="text/javascript">
function wypisz()
{
var liczba1 = parseInt(document.getElementById('pole1').value);
var liczba2 = parseInt(document.getElementById('pole2').value);
var napis="";
if((isNaN(liczba1)==false) && (isNaN(liczba2)==false))
{
if(liczba1 < liczba2) {
for(i = liczba1; i <= liczba2; i++) {
napis = napis + i + " ";
}
} else {
for(i = liczba1; i >= liczba2; i--) {
napis = napis + i + " ";
}
}
document.getElementById('wynik').innerHTML = napis;
}
else
{
if((isNaN(liczba1)==true) && (isNaN(liczba2)==false))
document.getElementById('wynik').innerHTML="Wartość w lewym polu nie jest liczbą";
else if((isNaN(liczba1)==false) && (isNaN(liczba2)==true))
document.getElementById('wynik').innerHTML="Wartość w prawym polu nie jest liczbą";
else if((isNaN(liczba1)==true) && (isNaN(liczba2)==true))
document.getElementById('wynik').innerHTML="Wartość w lewym i prawym polu nie są liczbami";
}
}
</script>
</body>
</html>
Napewno da się to lepiej napisać, ale nie robiłem zbyt dużo w JS :)