Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js] Odczyt z onClick
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Lombi
Witam,

Słuchajcie taki głupi problem mam:

w onClick jest tak:
  1. onClick="funkcja('b');"


i chce odebrac to b tak abym mogl sobie potem napisac:
  1. function funkcja (n) {
  2. if (n == 0)... }


Żeby zamiast n podstawiło mi wartosc b. I nie moge sobie poradzic :-(
nevt
wszystki jest ok, tylko skoro wywołujesz funkcja('b) to dlaczego potem masz porównanie if(n == 0) ... ? nie powinno być if(n == 'b') ?
Lombi
Tylko że ja mam dwa stany b=0 i b=1 i chce to zeby nie za zero podstawilo b tylko za n smile.gif
dr_bonzo
Kod
function funckja( b )
{
  if ( b )
  {

  }
  else
{
  }
}





funckja( true );
funckja( false );

// skoro masz tylko 2 wartosci
nevt
kolego czyli b to zmienna?
a jak zapisujemy zmienne w js? 'b' czy po prostu b ?
twoje wywołanie powinno być: onClick="funkcja( b );"
oczywiście zakladając, że gdzieś wcześniej w skrypcie inicjujesz zmienną globalną b.
Lombi
Napisze jeszcze raz dokladnie co chce smile.gif

w pliku html mam onClick="f( ? );"

w pliku js mam tak:
  1. var b = 0; i niżej
  2.  
  3. function f (n)
  4. if (n == 0)
  5. {
  6. n = 1;
  7. }
  8. else
  9. {
  10. n = 0;
  11. }


i chce żeby to było równe:
  1. if (b == 0)
  2. {
  3. b = 1;
  4. }
  5. else
  6. {
  7. b = 0;
  8. }


Chce żeby za n podstawil mi zmienna b (lub inna pobrana z onclick) exclamation.gif! Czy to możliwe? Czy to ja żle kombinuje?
nevt
no dobrze kombinujesz, jeszcze raz ci napiszę:

onClick="return funkcja( b );"

czy niewyraźnie piszę, czy mnie kompletnie nie rozumiesz?
Lombi
Rozumiem i tak zrobiłem, tylko że to nie działa!

Dla sprawdzenia dałem tak:
  1. var b = 0;
  2.  
  3. function f (n)
  4. if (n == 0)
  5. {
  6. n = 1;
  7. alert (b);
  8. }
  9. else
  10. {
  11. n = 0;
  12. alert (b);
  13. }


i wartosc b nie jest rowna wartosci n! po IF powinno mi pokazać ze b = 1 po ELSE b = 0 ale nie zmienia wartosci b i kropka!
nevt
no w końcu zrozumiałem, co chcesz osiągnąć... gdybyś tak wcześniej napisał, że potrzebujesz wewnątrz funkcji modyfikować zawartość zmiennej, której nazwę przekazujesz jako parametr ...

twój przykład nie działa i nigdy nie będzie działał, bo zmienne typów prostych są w js zawsze przekazywane przez wartość a nie przez referencję...

możesz posiłkować się funkcją eval(), wtedy twój kod wyglądałby mniej więcej tak:
Kod
function f(x)
{
  eval('n=' + x); // przepisujesz argument wywołania do zmiennej lokalnej
// tutaj wstawiasz twój kod odwołując się do zmiennej lokalnej n
  eval(x + '=n'); // przepisujesz zmienną lokalną do argumentu wywołania
}

// i wtedy wywołanie...

onClick = "return f('b');"


Pisałem "z ręki", ale powinno działać...

Powodzenia.
Lombi
Genialne exclamation.gif Działa wreszcie tongue.gif
Dzięki NEVT za wytrwałość i udzielanie porad!

Zrobilem to tak:
Kod
var b = 0;

function f(n)
{
    var nz = eval(n);
    if (nz == 0)
    {
        // Tu sie wykonuje czynność
        nz = eval(n + '=1');
    }
    else
    {
        // A tu druga czynność
        nz = eval(n + '=0');
    }
}

// i w html
onClick="f('b');"


Nie znam JS i myślalem ze dzieje sie to odrobine inaczej. Mam nadzieje że to co napisalem to nie świetokractwo tongue.gif
Czekam na ewentualne rady smile.gif
Jeszcze raz DZIEKUJE exclamation.gif
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.