Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][JavaScript] Przesyłanie tablicy ze skryptu do skryptu.
Forum PHP.pl > Forum > Przedszkole
Kurdtt
Witam,

Mam funkcję w skrypt.js, która pobiera mi tablicę stringów i chciałbym ją przesłać do całkiem innej funkcji w skrypt2.js w obrębie jednego pliku HTML.
Jak to zrobić? Czy mogę wywoływać funkcję ze skrypt2.js w skrypt.js? Jeżeli tak, to dlaczego nie przesyła mi tej tablicy?

Z góry dziękuje.
trueblue
Możesz.
W jaki sposób obecnie je przesyłasz, przekazując jako parametr funkcji?
Kurdtt
Skrypt.js:

$("div.Wys").click(function(){
var tablica = [];
var rows= $("#list").jqGrid('getRowData');
for (var i=0 ; i<rows.length ; i++){
var row=rows[i];
tablica[i] = row["miasto"];
}
for (var i=0 ; i<tablica.length ; i++){
alert(tablica[i]);
}

addList(tablica);
});



Skrypt2.js


function addList(listStr) {
//var listArray = listStr.split("\n");
var listArray = listStr;
for (var i = 0; i < listArray.length; ++i) {
var listLine = listArray[i];
...



Chciałem, by po zakończeniu 1 skryptu ze Skrypt.js odpalił się drugi skrypt z Skrypt2.js i przetwarzało później tę tablicę.
trueblue
Czy alerty w pętli w skrypt1.js wykonują się?
Kurdtt
Tak, wykonują się, natomiast po przesłaniu tablicy nie chcą się wykonywać i zastanawia mnie - dlaczego.
trueblue
A funkcja addList jest poprzedzona jakimś kodem, czy to jest początek pliku?
Kurdtt
Jest poprzedzona kodem, nawet dużą jego ilością, lecz czy ta tablica nie powinna pójść bezpośrednio do tej funkcji bez względu na wszystko?
Sposób przekazywania rozumiem jest dobry? Jestem nowy, jeżeli chodzi o JS i nie wiem, czy funkcja może wywoływać funkcje z innego pliku, czy raczej zwracać tę tablicę, a później by była przechowywana przez jakiś skrypt napisany w headzie w index.html, by on mógł przekazać tę tablicę funkcji do innego skryptu.
trueblue
Sprawdź czy funkcja addList nie jest czasem w funkcji zdarzenia $(document).ready().
Jeśli jest to wyprowadź ją na zewnątrz.
Jeśli jest na zewnątrz, to wywołaj w niej alert(listStr), żeby wiedzieć czy jest wywoływana i czy dostaje odpowiednią tablicę.
Kurdtt
Nie jest ani w zdarzeniu $(document).ready(), nie wyświetla alerta w drugim skrypcie, nie mam pojęcia dlaczego. W pierwszym tak, natomiast w drugim nie.
trueblue
A funkcja addList jest wywoływana (alert(1) dla testu)?
Sprawdź czy masz gdzieś w kodzie zmienną o takiej samej nazwie jak ta funkcja.

Proponuję też odpalić na Chrome narzędzie developerskie (F12->Zakładka Console), będzie więcej widać.
Kurdtt
Ciekawa sprawa, nota bene - dziękuję za tę podpowiedź, bardzo fajnie się na tym pracuje.

Zrobiłem inną rzecz - napisałem w skrypcie drugim prostego alerta:

function wyswietl(){
alert("ABC");
}

a w skrypcie pierwszym, w w/w funkcji napisałem: wyswietl(); i wyskoczył błąd: ReferrenceError: wyswietl is not defined.

Czyli rozumiem, że nie da się tego tak zrobić?
trueblue
Da się.
Czy skrypt2.js jest na pewno doczytywany? Sprawdź nazwę w head, sprawdź zakładkę Network (filtr na Scripts), zresztą już w konsoli powinno być widać kiedy jest problem z wczytaniem.
Kurdtt
Tak, jest doczytywany, działają inne funkcje oparte na tym skrypcie. Dziwne, że nie może się odwołać do funkcji tam zamieszczonej. Kolejność dołączania skryptów jest ważna?
trueblue
Możesz ustawić skrypt2.js przed jakimkolwiek innym skryptem, który go wywołuje.
Chociaż u mnie nie ma to znaczenia.
Kurdtt
Szczerze mówiąc, nie wiem dlaczego, ale samo zaczęło działać. Dziękuje ślicznie za poświęcony czas - pozdrawiam.
trueblue
Mogło być też tak, że błąd składni w innym miejscu skrypt2.js, co powodowało niemożność wywołania funkcji addList.
Ale jak działa, to działa.
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.