eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.www › Pytanie początkującego - parametry do funkcji Javascript
Ilość wypowiedzi w tym wątku: 3

  • 1. Data: 2011-05-20 15:46:00
    Temat: Pytanie początkującego - parametry do funkcji Javascript
    Od: Tomasz Tybusz <t...@g...com>

    Witam, mam pytanie odnośnie Javascript. Napisałem też na
    pl.comp.lang.javascript, ale nie widzę odzewu.

    Ma taki fragmencik kodu w Javascript
    function fnFormatDetails ( nTr )
    {
    var aData = oTable.fnGetData( nTr );
    var sOut = '<table cellpadding="5" cellspacing="0" border="0"
    style="padding-left:50px;">';
    sOut += '<tr><td>Numer karty:</td><td>'+aData[6]+'</td></tr>';
    sOut += '<tr><td>Działania korygujące:</td><td><input
    name="pokaz_dzialania" type="button"
    onClick="pokaz_dzialania_korygujace('+aData[6]+');" value="Pokaż
    działania korygujące" /><td></tr>';
    sOut += '</table>';

    return sOut;
    }
    Parametr aData[6] jest równy stringowi "2/2011/R"

    funkcja obsługująca button wygląda tak

    function pokaz_dzialania_korygujace(nr_karty)
    {
    alert(nr_karty);
    return true;
    }

    Oczywiście nie działa. Pytanie, jak poprawnie przekazać parametr?

    Dzięki za pomoc

    PS.
    Firebug pokazuje taką zawartość buttona. LOOKS STRANGE!!!
    <input type="button" value="Pokaż działania korygujące" r");"="" 2011=""
    2="" onclick="pokaz_dzialania_korygujace(" name="pokaz_dzialania">


  • 2. Data: 2011-05-21 15:48:31
    Temat: Re: Pytanie początkującego - parametry do funkcji Javascript
    Od: Szyk <s...@o...pl>

    [Odpowiadam tylko dlatego, że chwilowo miałem ręce zajęte ciastkiem i
    jedyne co mogłem to się przyglądać ekranowi na którym akurat miałem tą
    wiadomość.] 8O

    Problem polega na tym, że do obsługi zdażenia onClick podaje się funkcję
    bez parametrów. Gdybyś znał asembler czy C było by Ci to łatwiej
    zrozumieć gdyż jest to prosta analogia do adresu/wskaźnika do funkcji.
    Chodzi o to, że do Button::onClick przechowuje sam wskaźnik do funkcji
    zaś Ty chcesz wywołaś funkcję z danym parametrem. Sam przyznasz, że
    przekazanie wskaźnika do funkcji (info o tym jaka funkcja ma być
    wywołana) to coś innego niż jej wywołanie.

    Jak chcesz użyć jakichś danych w tej funkcji, to musisz je zadeklarować
    jako globalne.
    czyli coś w stylu:

    // definiujesz zmienną
    var gZmienna = "2/2011/R";

    // tu przypisujesz functionOnClick() do buttona (pominąłem)

    function functionOnClick()
    {
    // tu się dorywasz do gZmienna
    }


    Innym sposobem jest zdefiniowanie "na sztywno" stałej w funkcji.

    function functionOnClick()
    {
    var gZmienna = "2/2011/R";
    // tu robisz coś ważnego z gZmenna
    }



    To tak na moją logikę. I jak by co to nie robię na co dzień w JS.


  • 3. Data: 2011-05-30 09:47:56
    Temat: Re: Pytanie początkującego - parametry do funkcji Javascript
    Od: Singollo <j...@g...com>

    W dniu 2011-05-20 17:46, Tomasz Tybusz pisze:
    > function fnFormatDetails ( nTr )
    > {
    > var aData = oTable.fnGetData( nTr );
    > var sOut = '<table cellpadding="5" cellspacing="0" border="0"
    > style="padding-left:50px;">';
    > sOut += '<tr><td>Numer karty:</td><td>'+aData[6]+'</td></tr>';
    > sOut += '<tr><td>Działania korygujące:</td><td><input
    > name="pokaz_dzialania" type="button"
    > onClick="pokaz_dzialania_korygujace('+aData[6]+');" value="Pokaż
    > działania korygujące" /><td></tr>';
    > sOut += '</table>';
    >
    > return sOut;
    > }
    > Parametr aData[6] jest równy stringowi "2/2011/R"
    >
    >
    >
    > PS.
    > Firebug pokazuje taką zawartość buttona. LOOKS STRANGE!!!
    > <input type="button" value="Pokaż działania korygujące" r");"="" 2011=""
    > 2="" onclick="pokaz_dzialania_korygujace(" name="pokaz_dzialania">

    Kod, jaki chcesz wygenerować, powinien mieć postać:
    [...] onclick="pokaz_dzialania_korygujace('2/2011/R')" [...]

    jeżeli string ma postać 2/2011/R

    czyli w JS chcesz mieć tak:

    onClick="pokaz_dzialania_korygujace(\''+aData[6]+'\'
    );"

    Natomiast jeśli w string ma postać dokładnie taką jak podajesz (tzn,
    razem z cudzysłowami) - na to mi wygląda, to albo:
    - najpierw powinieneś się tych cudzysłowów pozbyć - bo psują ci HTML
    - napisz
    onClick=\'pokaz_dzialania_korygujace('+aData[6]+');\
    ' (czyli zmień
    cudzysłowy ograniczające wartość atrybutu na apostrofy

    Pozdrawiam,

    Singollo

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: