![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 157 Pomógł: 5 Dołączył: 3.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Aż wstyd pytać, jednakże po całkiem długim czasie wracam do js (IMG:style_emoticons/default/wstydnis.gif) :/.
Mam taką zmienną: Kod var filterVal = $(this).text().toLowerCase().replace('tekst A','tekst B'); Prosta funkcja, która odnajduje tekst 1 i zmienia na drugi. Chciałbym ją rozwinąć o więcej tekstów do podmiany,czyli by jednocześnie Kod var filterVal = $(this).text().toLowerCase().replace('tekst A','tekst B'); var filterVal = $(this).text().toLowerCase().replace('tekst C','tekst D'); Oczywiście w powyższym przykładzie zostanie zastosowana tylko ostatnia opcja, zatem tutaj robią się schody. Spróbowałem wpakować to w funkcję: Kod function filterVal() { $(this).text().toLowerCase().replace(' tekst A','tekst B'); $(this).text().toLowerCase().replace(' tekst C','tekst D'); } Ale po podmianie wszędzie fiterVal na filterVal() kod się nie wykonywał. Ktoś poradzi, jak upchać parę zmian tekstów w jedną zmienną, etc? Tutaj wrzucam całość kodu będącego częścią jquery Pretty photo (zaznaczyłem to wrażliwe miejsce): Kod $(document).ready(function() { /* Pretty Photo */ $(\"a[rel^='gazeta']\").prettyPhoto({ counter_separator_label: '/', /* The separator for the gallery counter 1 of 2 */ theme: 'dark_rounded', /* light_rounded / dark_rounded / light_square / dark_square / facebook */ horizontal_padding: 20, /* The padding on each side of the picture */ hideflash: false, /* Hides all the flash object on a page, set to TRUE if flash appears over prettyPhoto */ wmode: 'opaque', /* Set the flash wmode attribute */ autoplay: true, /* Automatically start videos: True/False */ modal: false, /* If set to true, only the close button will close the window */ deeplinking: true, /* Allow prettyPhoto to update the url to enable deeplinking. */ default_width: 1020, default_height: 704, social_tools: false, overlay_gallery: false, show_title: false, }); /* Pretty Photo */ /* filtrowanie zawartości */ $('ul#filter a').click(function() { $(this).css('outline','none'); $('ul#filter .current').removeClass('current'); $(this).parent().addClass('current'); /************************************************* TUTAJ JEST TEN ELEMENT **/ var filterVal = $(this).text().toLowerCase().replace('TREŚĆ A','TREŚĆ B'); /************************************************* TUTAJ JEST TEN ELEMENT **/ if(filterVal == 'all') { $('ul#portfolio li.hidden').fadeIn('slow').removeClass('hidden'); } else { $('ul#portfolio li').each(function() { if(!$(this).hasClass(filterVal)) { $(this).fadeOut('normal').addClass('hidden'); } else { $(this).fadeIn('slow').removeClass('hidden'); } }); } return false; }); }); Kod jest częścią skryptu jquery Pretty Photo |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 264 Pomógł: 54 Dołączył: 31.08.2007 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Utworzyć z tych tekstów tablicę wielowymiarową lub obiekt. Przekazać ją do funkcji a tam wykonać pętlę i podmieniać po kolei według tablicy
Ten post edytował Greg0 16.10.2012, 12:42:31 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 157 Pomógł: 5 Dołączył: 3.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłem tak jak poniżej, ale nie działa :/. Oczywiście wszędzie, gdzie było filterVal, to zmieniłem na filterVal(). Nie wiem, czy dobrze robię?
Kod var Tablica = [];
Tablica[0] = ['nazwa1' , 'nazwa2']; Tablica[1] = ['nazwa3' , 'nazwa4']; Tablica[2] = ['nazwa5' , 'nazwa6']; function filterVal() { licz=0; while (3>licz) { $(this).text().toLowerCase().replace('Tablica[licz][0]','Tablica[licz][1]'); licz++; } } if(filterVal() == 'all') { $('ul#portfolio li.hidden').fadeIn('slow').removeClass('hidden'); } else { $('ul#portfolio li').each(function() { if(!$(this).hasClass(filterVal())) { $(this).fadeOut('normal').addClass('hidden'); } else { $(this).fadeIn('slow').removeClass('hidden'); } }); } return false; }); Ten post edytował simperium 16.10.2012, 13:03:59 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 7 Dołączył: 6.01.2012 Ostrzeżenie: (0%) ![]() ![]() |
Tak na szybko:
zamiast licz=0; daj
bo inaczej będzie rzucać błędem undefined. No, chyba że masz tą zmienną zadeklarowaną wcześniej (wątpię). linia 11: nie pakuj nazwy tablicy w cudzysłowia, to nie ciąg znaków. Prawidłowa postać wygląda tak:
Sama funkcja filterVal nic nie zwraca, więc warunek if jest bezcelowy. Nigdy nie będzie 'all', bo niby skąd. W ogóle cała Twoja pętla while() jest dziwna, bo robi w pustkę, efekty działania funkcji nie są nigdzie przypisywane i giną. Zadeklaruj jakąś zmienną, do której będziesz dostawiał efekty kolejnych podmian i zwróć ją na końcu funkcji, ot choćby tak:
Pewnie dalej nie będzie działać, bo to tylko część skryptu, ale zawsze to jakiś krok do przodu. Ten post edytował stud3nt 16.10.2012, 13:39:40 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 264 Pomógł: 54 Dołączył: 31.08.2007 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Odwołujesz się do $(this), które nie istnieje. Użyj pętli for.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 11:13 |