[JS] cyfry zamiast obiektów

Odpowiedz Nowy wątek
2006-10-04 20:43
0

Chcę napisać wyszukiwarkę obiektów JS:

licz = 4;

function wypisz(obiekt, szukane)
{
    zawartosc = new Array()
    for(j in obiekt) zawartosc.push(j);
    tabStr = zawartosc.join();
    if(tabStr.length>1) obiekt = "<a href=\"javascript:szuk('"+szukane+"."+obiekt+"')\" target='_self'>"+obiekt+"</a>";
    zapis = (((licz++)+2)%3==0)?"<tr><td>"+obiekt+"</td>":
        (((licz+1)%3==0)?"<td>"+obiekt+"</td></tr>":"<td>"+obiekt+"</td>");
    licz++;
    return zapis;
}

function szuk(szukane)
{
    if(!szukane) szukane = document.formularz.szukaj.value;
    if(!eval(szukane)) zapis = "<b>Nie odnaleziono objektu "+szukane+":</b><br/>";
    else
    {
        zapis = "<b>Wyniki przeszukania objektu "+szukane+":</b><br/><table cellpadding='0' cellspacing='10' border='0'>";
        obiekt = eval(szukane);
        for(i in obiekt) zapis += wypisz(i, szukane);
        zapis += "</table>";
    }
    document.formularz.szukaj.value = szukane;
    document.getElementById("wynik").innerHTML = zapis;
    licz = 0;
}

Wszystko niby działa dobrze tylko w funkcji wypisz() przy przeszukiwaniu obiektu "location" instrukcja:

for(j in obiekt) zawartosc.push(j);

wstawia do tablicy cyfry od zera wzwyz zamiast href, host itd
Wydaje mi się to bardzo dziwne bo w funkcji szuk() instrukcja:

for(i in obiekt) zapis += wypisz(i, szukane);

dodaje do ciągu objekty a jest skonstruowana tak samo [???]

Czy ktoś mógłby mi pomóc??


It's not just about livin' forever Johny.
The trick is livin' with yourself forever.

Pozostało 580 znaków

2006-10-04 21:29
nav
0

for (j in obiekt) zawartosc.push(obiekt[j]);


utf-8 rlz! ٩(ಥ_ಥ)۶

Pozostało 580 znaków

2006-10-04 23:10
0

nadal to samo :/


It's not just about livin' forever Johny.
The trick is livin' with yourself forever.

Pozostało 580 znaków

2006-10-04 23:16
0

Ty masz ciapek888 cos nie tak ze swoja przegladarka, u mnie:

var obiekt = location, zawartosc = [];
for(j in obiekt) zawartosc.push(j);
alert(zawartosc.join(' '));

daje efekt:
hash host hostname href pathname port protocol search replace assign reload

[dopisane]

natomiast to co napisal kolega to chyba powinienes dac w tej drugiej linii:
for(i in obiekt) zapis += wypisz(obiekt[i], szukane);


Pozostało 580 znaków

2006-10-19 22:07
0

Dopisałem funckję legal(), która sprawdza, czy obiekt jest cyfrą, żeby obiekty które posiadają zawartość typu 1 2 3 4 5 6 nie były linkami do następnego szukania:

function legal(licz)
{
    for(k=1;k<10;k++) if(licz.substring(0,1)==k) return false;
    if(licz=="" || licz==" " || licz=="  " || licz=="\n" || licz=="\t") return false;
    return true;
}

Funkcja jest wywoływana w obu poprzednich funkcjach jako warunek przed dopisaniem do tabeli i do zmiennej zapis.
Wpisany w formularzu obiekt jest przeszukiwany bez zarzutu, ale przeszukując wyniki przeszukania, znajduje same cyfry.
Żaden znaleziony obiekt nie jest więc linkiem, bo dzięki funkcji legal() znalezione cyfry(oprócz zera) nie są dopisywane do tabeli.
Co najdziwniejsze, scalenie z pozoru tych samych tabel w jeden ciąg nie daje za każdym razem tego samego efektu.
Raz jest np "c", a innym razem "p", a przecież powinno być "0" [glowa]

piechnat napisał(a)

natomiast to co napisal kolega to chyba powinienes dac w tej drugiej linii:for(i in obiekt) zapis += wypisz(obiekt[i], szukane);
Jak robię w ten sposób, to cały skrypt przestaje działać i raczej nie mam nic z przeglądarką, bo w mozilli i w konquerorze jest tak samo...

poza tym, zrobiłem na stronie opis wszystkich zdarzeń w czasie wyszukiwania.
Sami zobaczcie http://osearch.prv.pl wpiszcie document albo history...

i co jest nie tak? :-[


It's not just about livin' forever Johny.
The trick is livin' with yourself forever.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0