Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wywalić, wyzerować, zabić, zniszczyć tablicę...
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
ahold
Tworze w javascript tablicę.


var tablica = new Object();

Przypisuję do niej rózne elementy:
tablica[1]='kot';
tablica[ala]='fajna';
itp, itd


W połowie działania skryptu, muszę zamordować tablicę wraz z jej zawartością.
Od kilku godzin staramy się znaleźć sposób, żaden nie wychodzi.


delete tablica;
tablica.length = 0;
tablica=null;

Nic, nie kasuje jej.

Próbowałem nawet istniejącą nadpisać komendą

var tablica = new Object();


Nic, tablica "nietknięta" wraz z zawartością.
Nie wiem z czego oni ją zrobili że jest nie zniszczalna.


Musi być jakiś sposób.
#luq
Po pierwsze to nie tablica a obiekt. W JS`ie zmienne niszczy się przypisując im typ undefined.
Kod
    var tab = ['a', 'b'];
    alert( tab.toString() );
    tab = undefined;
    alert( tab.toString() ); // dostajesz TypeError: tab is undefined
ahold
Błąd.

Jak zrobić tablicę dynamiczną.
Abym mógł w dowolnym momencie kodu wydać polecenie

tablica[nowy indeks ktory nie istnieje]='12';

A następnie zniszczyć ją całkowicie, wraz z indeksami ?

nazwa np koala
koala[ala] = ppp
koala[ppp]= aaa

Jak dałem udefined dla koala
to koala[ala] dalej jest poprawne :/


Aby koala było niepoprawne, oraz koala[ala] też zostało zniszczone.
#luq
Cytat(ahold @ 13.07.2009, 11:47:46 ) *
Jak zrobić tablicę dynamiczną.
Abym mógł w dowolnym momencie kodu wydać polecenie

tablica[nowy indeks ktory nie istnieje]='12';

A kto powiedział, że w podanym przeze mnie kodzie nie da się dodać do tablicy nowego indeksu?

Kod
    var tab = ['a', 'b'];
    tab.push( 'c' ); // ew. tab[2] = 'c';
    tab = undefined;

    alert( tab.toString() );
    alert( tab[0] );
    alert( tab[2] );
ahold
Dobrze, za chwilkę spróbuję twój kod.

Powiedz mi przed tym jak w funkcji utworzyć zmienną globalną ?

Chcę w funkcji dać undefined, a potem zarejestrować ponownie jako zmienną globalną.
Jakiś pomysł ?
#luq
Co dokładnie chcesz zrobić, bo ogólnie raczej globala nie powinno się używać chyba, że naprawdę nie ma innej możliwości (w JS`ie jeszcze to jest dobre rozwiązanie, w PHP raczej nie)
Ogólnie coś takiego gdy chcesz stworzyć globala w funkcji

Kod
function a(){
    // bez var przed nazwa zmiennej
    global = 'foo';
}

//alert( global ); <- tu ReferenceError: global is not defined
a();
alert( global );


ale lepiej jest zdefiniować na początku zmienną globalną i potem ją zmieniać i wymieniać
Kod
// tzw. zamknięcia
var global = 'foo';

function a(){
    alert( global );    
}
function b(){
    global = 'bar';
    alert( global );
}

a();
b();
global = undefined;
b();
ahold
Jesteś wielki.

Twoja metoda z usunięciem var powiodła się smile.gif
Cytat
function a(){
// bez var przed nazwa zmiennej
global = 'foo';
}

//alert( global ); <- tu ReferenceError: global is not defined
a();
alert( global );


Powiedz co dokładnie oznacza var ?

Że to jest zmienna lokalna dostępna tylko dla funkcji w której została stworzona?

Bo jakos zmienna z var na początku generowana w fukncji nie chciała mi nigdzie działać (z wyjątkiem funkcji która ją tworzyła).
#luq
Ogólnie chodzi o to że zmienna zadeklarowana poprzedzona "var" jest zmienną lokalną widoczną tylko w podanym bloku kody/zakresie (czy jak to inaczej nazwać). Deklaracja bez "var" oznacza zmienną globalną widoczną wszędzie.

Cytat
Bo jakos zmienna z var na początku generowana w fukncji nie chciała mi nigdzie działać (z wyjątkiem funkcji która ją tworzyła).

Nie bardzo rozumiem. Podaj jakiś przykład.
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.