[JS] Szybkosc pętli

0

Cześć

Działam w JavaScript i w pętli przeszukuje pareset input'ów w danej kolumnie, czy user poprawnie wpisał cene netto. Zdarzenie to działa na onblur(), a problem w tym, że przejście z jednego inputa do drugiego trwa dobre z 4sek. to paranoja ! Dlaczego, ano dlatego ze w funkcji jedna pętla for przeszukuje inputy czy są poprawne wartości a druga pętla for oblicza, przelicza ceny.

Usunąłem już z pętli wartość która liczyła wszystkie elementy w witrynie, a pozniej dopiero szukala odpowiedniego inputa- wstawilem wartosc taka jaka jest ogolna ilosc inputow, Troszke to przyspieszylo ale wciaz jest kiepsko, strasznie muli.
Zastanawiam sie nad predkoscia wykonywania instrukcji w petli FOR, a moze dac WHILE ???

0

Nie wiele to zmieni. Mało kto pamięta, że w JS można emulować wielowątkowość :)


function f(){
    settimeout(0, "dlugowykonujacasiefunkcja1()");
    settimeout(0, "dlugowykonujacasiefunkcja2()");
}

Funkcje 1 i 2 będą działały współbieżnie. Wyrzuć więc pętle do osobnych funkcji i odpal w ten sposób. Przyspieszy.

0

HMmm, kombinuje, kombinuje i błędy

Błąd: useless setTimeout call (missing quotes around argument?)

a wywołuje tak :

setTimeout(0, CountPrices(p_price,p_all_count_items));

0

na odwrót parametry i to co ma się wykonać ma być w cudzysłowach
np: 'funkcja(args)'
lub samą nazwę funkcji (wtedy nie możesz podać parametrów: funkcja

0

Wybaczcie, ale nie rozumiem tej funkcji, przeciez ona jest do wyswietlania alertow, wiadomosci :

setTimeout("alert('5 seconds!')",5000);

a moja funkcja wyglada tak :

function CountPrices(param_cel,param_main_count)
{
	var suma_p2= 0;
	var tmp_is_price2= "0";
						
	for (var i = 1; i <= param_main_count; i++) 
	{			        				    
		if( parseFloat(document.getElementById('value_zlom_'+i).value) > 0 )
		{
		 suma_p2= (suma_p2 + parseFloat(document.getElementById('value_zlom_'+i).value));
		 document.getElementById('hidden_val_zlom').value= suma_p2;
		}
	}
										    
    document.getElementById('hidden_val_end').value= (parseFloat(param_cel) -  document.getElementById('hidden_val_zlom').value);

}

wiec jak moze cos takiego dzialac :

setTimeout("CountPrices(p_cel,p_all_count_items)", 0);

0

Normalnie, przecież funkcja alert() to zwyczajna funkcja taka sama jak ta twoja. Spróbuj krok po kroku uruchomić swoją funkcję:

function mojAlert(msg){
    alert(msg);
}

setTimeout("mojAlert('wiadomosc')", 10);

Jak widać działa. Następnie skomplikujmy troszkę sprawę i każmy mu korzystać z argumentu, który jest zmienną globalną:

var zmienna = "wiadomosc";
function mojAlert(msg){
    alert(msg);
}

setTimeout("mojAlert(zmienna)", 10);

Pytanie kolejne co ze zmienną z obiektu? Odpowiedź:

var zmienna = "wiadomosc2";
function mojAlert(msg){
    alert(msg);
}

setTimeout("mojAlert(document.getElementById('iden').innerHTML)", 10);

I tak dalej można sobie życie komplikować.

W Twoim przypadku wystarczy w jakiś sposób podać do skryptu param_cell i param_count

0

cooo ? nie służy do wyświetlania alertów tylko do wykonania czegoś z opóźnieniem

chciałoby się rzec: bosheee

1 użytkowników online, w tym zalogowanych: 0, gości: 1