Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] zasieg zmiennych
Forum PHP.pl > Forum > Przedszkole
c4ash
Witam!

Albo nie moge tego znalezc, albo to co znalazlem nie zrozumialem na tyle.
W kazdym razie, mam funkcje1 ktora pobiera wspolrzedne. Jak te dane przekazac do funkcji2?

funkcja1
[JAVASCRIPT] pobierz, plaintext
  1. function getXY(e) {
  2. x = (window.Event) ? e.pageX : event.clientX;
  3. y = (window.Event) ? e.pageY : event.clientY;
  4.  
  5. document.getElementById(document.getElementById('position1').value === '' ? 'position1' : 'position2').value = x+":"+y;
  6. }
[JAVASCRIPT] pobierz, plaintext

funkcja2
[JAVASCRIPT] pobierz, plaintext
  1. function markIt(e)
  2. {
  3. mark.style.left = document.getElementById('position1').value = x;
  4. mark.style.top = document.getElementById('position1').value = y;
  5. mark.style.width = document.getElementById('position2').value = x;
  6. mark.style.height = document.getElementById('position2').value = y;
  7. }
[JAVASCRIPT] pobierz, plaintext

To co mam, powoduje, ze w elemencie position1 z funkcji1 znika value x a ustawienia z funkcji2 pokrywaja sie tylko czesciowo.
Co przerobic, aby nic nie znikalo, a dane z jednej funkcji zostaly przekazane w sposob prawidlowy do funkcji2?
!*!
http://www.doman.art.pl/kursjs/kurs/zmienne.html "zasięg zmiennych"
c4ash
No tak, czytalem. Jesli zadeklaruje zmienna przed funkcja, to moge w funkcji ja wykorzystac. Ale jak przeslac zmienne z jednej funkcji do drugiej? Moze za tepy jestem, aby to zrozumiec, albo mam pomrocznosc jasna... Nawet jesli zadeklaruje zmienne na poczatku, przed funkcja, to i tak nic to nie zmienia w funkcjonowaniu skryptu. W dalszym ciagu nie przesyla dokladnie takich danych jakie powinien...
semafor1985
Cytat(c4ash @ 18.02.2014, 12:49:10 ) *
Ale jak przeslac zmienne z jednej funkcji do drugiej?


jako argumenty?
PrinceOfPersia
dokładnie.

Kod
function jakasFunkcja(argument_1, argument_2) {
  alert(argument_1);
  alert(argument_2);
}

jakasFunkcja(12,54); // przekazujemy do funkcji 12 i 54


PS. czy to jest cały kod? Gdzie deklarujesz zmienne x, y oraz mark?
Jesli to cały kod, to zapomniałes o słówku kluczowym var (chyba, że celowo robisz te zmienne globalnymi).
c4ash
Nie, to nie jest caly kod. Tylko wycinek, ktory myslalem wystarczy.
Deklaracji wstepnie nie mialem. Potem zrobilem na samym poczatku skryptu, aby byly globalne. Dalej nie dziala to tak, jak chcialem.

Te przyklady, ktore podajecie, rozumiem. Ale nie o to mi chodzilo.
Potrzebuje przeslac wynik dzialania funkcji getXY do funkcji markIt.

Dzialanie zamierzone - klikam w dwa punkty - otrzymuje dwie pary (x,y) ktore wpisuje w formularz. Majac dwie pary (x,y) chce je ustawic w funkcji mark, a konkretnie w polach left, top, width, height - w ten sposob bede mogl utworzyc prostokat, o podanych parametrach.. O ile left i top dziala, o tyle width i height juz nie. A z pola gdzie zapisywalem pierwsza pare (x,y) znika (x).
!*!
To zrób to tak jak już wspomnieli wyżej i sprawdź czy nie nadpisujesz tych zmiennych gdzie indziej lub po prostu zmień ich nazwę.
owca_82
Z funkcji markIt możesz wywołać funkcję GetXY która to będzie zwracała określone dane, które potem będzie można wykorzystać do obróbki - zmienne deklaruj jako lokalne, przypisuj im jakieś dane a potem zwracaj
c4ash
Faktycznie, doszlo do nadpisania, a wywolanie funkcji getXY z funkcji markIt dopelnilo reszty.
Dziekuje.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.