• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wartość z inputa potrzebna do różnych funkcji

VPS Starter Arubacloud
0 głosów
1,097 wizyt
pytanie zadane 7 października 2016 w JavaScript przez PieroQQ Początkujący (420 p.)
W htmlu mam inputa typu number. Wpisuję do niego liczbę, która jest odczytywana po wciśnięciu guzika i funkcja według tej liczby generuje odpowiednią zawartość strony. W chwili generowania zawartości input znika. Potem potrzebuję ponownie dostać się do tej liczby ponieważ jest ona potrzebna do działania innej funkcji, w jaki sposób zrobić zmienną z której można korzystać globalnie ale jej wartość będzie taka jaką przypisała poprzednia funkcja?
komentarz 7 października 2016 przez ScriptyChris Mędrzec (190,190 p.)

Podaj kod, to ułatwi pomoc => http://forum.pasja-informatyki.pl/faq#jak-wstawic-kod-zrodlowy

w jaki sposób zrobić zmienną z której można korzystać globalnie

Np. w ten sposób:

var myData = '';

function foo() {
   myData = 'Hello';
}

function bar() {
  myData = 'World';
}

foo();
console.log( myData ); // Hello

bar();
console.log( myData ); // World

 

komentarz 7 października 2016 przez PieroQQ Początkujący (420 p.)
edycja 7 października 2016 przez ScriptyChris
<div id="liczba_pytan">Ile chcesz zadan? <input type="number" id="ile"/> <input type="submit" value="zatwierdz" onclick="pytania()"/> </div>

 

Ta liczba jest wykorzystywana to wygenerowania odpowiedniej liczby pytan. I potem w innej funkcji wyświetlenia po kolei odpowiedzi na każde pytanie, dlatego potrzebuję tej liczby, do tej 2 pętli gdy użytkownik już odpowie na pytania i je zatwierdzi 

 

function pytania()
{
	
	var tresc_diva="";
	var l_pytan= $("#ile").val();
	if(l_pytan>0)
	{
		for(i=0 ;i<l_pytan;i++)
	{
	tresc_diva = tresc_diva + '<div class="ask"> <div class="window"> Pytanie nr '+(i+1)+' </div> <div class="window" onclick="zmiana_styluA('+i+')" id="pytanieA'+i+'">A</div> <div class="window" onclick="zmiana_styluB('+i+')" id="pytanieB'+i+'" >B</div><div class="window" onclick="zmiana_styluC('+i+')" id="pytanieC'+i+'">C</div><div class="window" onclick="zmiana_styluD('+i+')" id="pytanieD'+i+'">D</div></div> '
	}
	var exam_end='<div id="koniec" onclick="Wyniki()"> Kliknij aby zakonczyc egzamin</div>';
	var ask_delete='Egzamin zrobiony z '+l_pytan+ ' zadan <br></br> <div id="return" onclick="location.reload()">Kliknij aby wybrac opcje ponownie </div> ' ;
	
	$("#sprawdzian").html(tresc_diva);
	$("#exam_end").html(exam_end);
	$("#liczba_pytan").html(ask_delete);
	}	
}

function Wyniki()
{
	var wyniki = "";
	for(i=0;i<ilosc;i++)
	{
		wyniki = wyniki+odpowiedz[i]+" ";
	}
	alert(wyniki);
}
komentarz 7 października 2016 przez ScriptyChris Mędrzec (190,190 p.)

Przekaż zatem ilość pytań jako parametr:

var exam_end='<div id="koniec" onclick="Wyniki( l_pytan )"> // przekazuje zmienną "l_pytan" do funkcji

I dodaj ją jako argument w funkcji Wyniki():

function Wyniki( ilosc ) // argument "ilosc", z którego korzystasz już w pętli
{
  /** tu kod */

}

"Tradycyjnie" wałkowany temat - EventListener zamiast onclick. Dodatkowo, w pętlach stosuj zmienne lokalne, czyli for ( var i = 0 ...)

komentarz 7 października 2016 przez PieroQQ Początkujący (420 p.)
Jak napisałem dopiero zaczynam i jeszcze nie wiem nawet co to jest addeventlistener ale dziś o tym poczytam, przekazanie tego parametru w sposób który napisałeś nie działa ponieważ l_pytan jest tylko w tej funkcji, wykonuje się i znika i gdy już skonczonym egzaminie klikam Zakonczenie egzaminu, które powinno wysłać l_pytan w konsoli wyskakuje błąd  Uncaught ReferenceError: l_pytan is not defined
komentarz 7 października 2016 przez ScriptyChris Mędrzec (190,190 p.)

Przepraszam, poprawka - trzeba dodać znaki escape:

var exam_end='<div id="koniec" onclick="Wyniki( \'' +  l_pytan + '\'  )"> Kliknij aby zakonczyc egzamin</div>';

Jeśli dalej nie zadziała, to masz bodziec, aby nie brnąć dalej w onclick :)

Próbowałeś to zrobić tak, jak pokazałem w pierwszym komentarzu?

komentarz 7 października 2016 przez PieroQQ Początkujący (420 p.)
Oh, zapomniałem odpisać. Teraz wszystko działa tylko jeszcze nie rozumiem jak i co zmieniły te znaki

1 odpowiedź

0 głosów
odpowiedź 7 października 2016 przez Comandeer Guru (604,920 p.)
Zrobić sobie osobny scope i tam obsługiwać wszystko?
komentarz 7 października 2016 przez PieroQQ Początkujący (420 p.)
Możesz dokładnie wyjaśnić albo polecić stronę gdzię mogę o tym przeczytać, jestem nowy w js'ie
komentarz 7 października 2016 przez Comandeer Guru (604,920 p.)
1
komentarz 7 października 2016 przez PieroQQ Początkujący (420 p.)
Dzięki, zaraz postaram się zrozumieć :D
komentarz 7 października 2016 przez ScriptyChris Mędrzec (190,190 p.)
document.querySelector( '#button1' )

Czyli jednak document.querySelector( '#' + id ) jest lepsze od document.getElementById( id )? Czy po prostu tak Ci się napisało / to kwestia przyzwyczajenia (lub wygody) / przy pobieraniu ID to jest bez znaczenia? :)

komentarz 7 października 2016 przez Comandeer Guru (604,920 p.)

Prawdę mówiąc zwykle używam getElementById. Musiałbym potestować jakie są dokładnie różnice.

komentarz 7 października 2016 przez niezalogowany

( getElementById jest szybsze o ~12% na Chromie : D )

komentarz 7 października 2016 przez Comandeer Guru (604,920 p.)
Nie dziwi mnie to. Narzut silnika CSS i statycznej kolekcji jednak da się odczuć.

Podobne pytania

0 głosów
1 odpowiedź 911 wizyt
pytanie zadane 28 czerwca 2016 w JavaScript przez n0s1gnal Użytkownik (700 p.)
0 głosów
1 odpowiedź 148 wizyt
pytanie zadane 25 grudnia 2018 w JavaScript przez Kijoszi Początkujący (330 p.)
0 głosów
2 odpowiedzi 556 wizyt

93,018 zapytań

141,984 odpowiedzi

321,282 komentarzy

62,364 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...