Z samym algorytmem nie pomogę, ale oto błędy które zauważyłam:
1. W kodzie html odnosisz się do funkcji z dużych liter, a w kodzie js z małych.
Tą linijkę:
<button class="button binar" onclick="Bin()" id="binarny" style="display:none">Bin</button>
popraw na: (usunęłam też display:none;)
<button class="button binar" onclick="bin()" id="binarny">Bin</button>
2. Warunek
if("wynik">0)
porównuje napis "wynik" z wartością 0, zamiast porównać wartość zmiennej liczba z 0. Poprawna wersja: if(liczba > 0)
3. Zmienna h powinna być zadeklarowana przed pętlą for, ponieważ inaczej za każdym razem zostanie zresetowana do 0 i nigdy nie zwiększy się o 1.
4. Pętla
for(i=0;j>"wynik"; i++)
jest niepoprawna, bo zmienna j nie jest aktualizowana w ciele pętli, więc pętla będzie wykonywała się w nieskończoność. Zamiast tego, warunek powinien sprawdzać, czy j jest większe od liczba:
for(i=0;j>liczba; i++)
5. Ta linijka nie ma sensu:
var liczba = document.getElementById("wynik").value;
W tym przypadku, div nie jest formularzem, więc nie możesz użyć atrybutu value. Zamiast tego ustaw zawartość elementu div za pomocą innerHTML.
Poprawna linijka:
var liczba = document.getElementById("wynik").innerHTML;
Lecz teraz podajemy liczbę jako wartość tekstu w elemencie HTML, a nie jako wartość liczbową. W takim przypadku, wartość innerHTML jest łańcuchem znaków, a nie liczbą. Podczas porównywania wartości liczba z 0, JavaScript traktuje ją jako łańcuch znaków, a nie jako liczbę.
Musisz teraz przekonwertować wartość liczba na liczbę, na przykład za pomocą funkcji parseInt():
var liczba = parseInt(document.getElementById("wynik").innerHTML);
6. No a poza tym zamień wszystkie var'y w kodzie na let'y