Dziwny skrypt


(wojtek20124) #1

Znalazłem w necie skrypt. Nie wiem za bardzo co on robi.

< a class=“btn-medium btn-primary” id=“saveButton” onclick=“if(typeof(sp)===‘undefined’){sp = 1; setInterval(function(){document.getElementById(‘saveButton’).innerHTML = ‘Saving [’ + (100 - ((1.0 / sp) * 100)).toFixed(2) + ‘%]’; sp+=0.01}, 0.01); };” >Save [0%]< /a>

sorki, że bez pliku, ale piszę to w pośpiechu.
Ten skrypt zaczyna bardzo szybko nabijać procenty, ale cały czas zwalnia. Powyżej 99% skrypt do przesady działa wolno. Żaden start nigdy nie ukończył ładowania (100%). Jak go zoptymalizować?


(bachus) #2

Rozwiązanie jest bardzo proste. Zapisałem je w notatniku na pulpicie a że piszę na szybko, nie mam czasu go pokazać. W sumie też nie wiem za bardzo co to rozwiązanie do końca robi. To powinno zoptymalizować Twój skrypt.


(krystian3w) #3
<a class="btn-medium btn-primary" id="saveButton" 
onclick="if(typeof(sp)==='undefined'){sp = 1; setInterval(
function(){
document.getElementById('saveButton').innerHTML
 = 'Saving [' + (100 - ((1.0 / sp) * 100)).toFixed(2) + '%]'; sp+=0.01}, 0.01); };
">Save [0%]</a>

Coś zapisuje po kliknięciu - a bardziej wyśwetla wynik jakiegoś działania jako zapis?


(wojtek20124) #4

bachus, takie śmieszkowanie jest off-topic. Raczej przyszedłeś tu sobie pożartować. Takich ludzi nienawidzę, bo takich nazywa się “trollami”.


(bachus) #5

Jeżeli nie załapałem pytania- to przepraszam, nie chciałem Ciebie urazić. Wydawało mi się, że pierwszy zacząłeś żartem i absurdalnym pytaniem, to starałem się trzymać konwencji.


(lukasssz) #6

W takim razie, ktoś musi powiedzieć konkretnie.
wojtek20124 - Twoje pytanie, jest bardzo nie zrozumiałe, bez skryptu nikt ci nie jest wstanie powiedzieć co może źle działać. A nawet nie podałeś jaki to skrypt czy czysty js czy jaka biblioteka.

Mylisz się bachus nie jest trolem , wręcz przeciwnie, zrobił to co powinien byś w padł na swój błąd w pisaniu posta.
Problemem są użytkownicy, którzy myślą " chcę to i to mam dostać". Którzy olewają poprawne i konkretne sprecyzowanie problemu. Tak jak ty. Którzy nawet się nie wysilą by poszukać w googlu ( nie mówię teraz o tobie ) . Pamiętaj, że nikt nie musi ci tu udzielać pomocy. Więc zastanów się następnym razem jak zaczniesz kogoś nazywać “Trolem” lub mieć pretensje.


(krystian3w) #7

Chyba podał w postaci nie działającego linka (zapomniał oznaczyć że to kod):

<a class="btn-medium btn-primary" id="saveButton" onclick="if(typeof(sp)==='undefined'){sp = 1; setInterval(function(){document.getElementById('saveButton').innerHTML = 'Saving [' + (100 - ((1.0 / sp) * 100)).toFixed(2) + '%]'; sp+=0.01}, 0.01); };">Save [0%]</a>

W sumie to i tak mało pewnie więcej jest osadzone w pliku js i wtedy być może byłoby to bardziej zrozumiałe.


(lukasssz) #8

A dziwne, bo mi nie pokazuję żadnego kodu js w źródle.

<a>Save [0%]</a>

Ale nie ważne.

Ten kod to tylko wizualizacja nic więcej nie robi chyba. Jaki jest cel pokazywania paska z procentami skoro to fake.


(krystian3w) #9

Wystarczy kliknąć odpowiedź zaraz pod 1 postem, potem ikonę cytuj i się ładuje post @wojtek20124, tam już widać onclick a żeby forum nie próbowało wyświetlić html jawnie to otoczyłem tagiem MD do kodów w formie blokowej.


(Fizyda) #10

Serio ja mam się tyle natrudzić i nakombinować, aby mu pomóc? To on jeśli chce uzyskać szybko i sprawnie dobrą i rzetelną odpowiedź powinien się przyłożyć i dać wszystko na tacy tak by ktoś kto jest w stanie mu pomóc mógł to zrobić jak najszybciej nie tracąc na to czasu.
Niestety, ale ludzie którzy posiadają jakąś większą wiedzę w temacie, owszem nie wszyscy, ale znaczna część lubi pomagać innym w problemach z dwóch powodów, pamiętają jak to jest się uczyć oraz sami mogą się uczyć na błędach innych i przypomnieć sobie jakie błędy często się popełnia przez jakąś nieuwagę, a tym samym szybciej mogą znaleźć pierdołowate błędy w swoim kodzie. Chodzi tutaj o ćwiczenie też oka do wyszukiwania błędów. Niestety każda z tych osób nie lubi marnować czasu na domyślanie się co autor miał na myśli. Skoro nie umie nawet zadać pytania to można dojść do wniosku że prawdopodobnie nie zrozumie tematu, a może nawet samej odpowiedzi, więc po co się wysilać i produkować?

Wracając do tematu. Jeśli pytasz co robi ten kod który znalazł @krystian3w:

To w bardziej czytelny sposób sam kod JS można zapisać:

if(typeof(sp)==='undefined')
{
	sp = 1;
	setInterval(function(){
		document.getElementById('saveButton').innerHTML = 'Saving [' + (100 - ((1.0 / sp) * 100)).toFixed(2) + '%]';
            sp+=0.01
        },
        0.01);
};

Czyli tłumacząc jeśli nie masz zdefiniowanej zmiennej sp w oknie to ustawiasz jej wartość na 1 a następnie wywołujesz co 0.01 ms (co jest błędem i nie jest możliwe ponieważ minimalnie można ustawić 1ms więc pewnie jest to do tej wartości zaokrąglone) podaną funkcję jako argument funkcji setInterval która w interwale o zadanej częstotliwości będzie wywoływała inną funkcję.
Funkcja którą przekazujesz jako argument znajduje button o ID ‘saveButton’ (czyli ten sam po kliknięciu którego wykonywany jest powyższy kod) i zmienia wartość jego tekstu obliczając wartość procentową symulowanego postępu, na końcu zwiększa wartość zmiennej sp by która jest globalna i dzięki temu możliwe jest odliczanie.
Nie tłumaczę co tam jest liczone bo to tylko matematyka i zaokrąglanie liczb.