-
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