Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Filtrowanie hash
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
aleks365
Witam, napisałem taki skrypt:

  1. $(document).ready(function () {
  2.  
  3. var cat_p = window.location.hash
  4.  
  5. var target = cat_p.substring(0,3);
  6. var target = target.replace('#c','');
  7.  
  8.  
  9. var target2 = cat_p.substring(12,20);
  10. var target2 = target2.replace('_pageCat_','');
  11.  
  12. if(window.location.hash == "#c"+target+"_pageCat_"+target2) {
  13. alert(target);
  14. alert(target2);
  15. //document.location = "/ajax.php?ajax=loc&id_cat_page_c="+target+"&id_cat_page="+target2;
  16. }
  17.  
  18. });


Chciałem żeby ten skrypt pobierał mi właściwe dane z adresu www.adres.pl/#c16_pageCat_5 "#c16" - to id kategori a "pageCat_5" - to numer stronicy w kategori i chciałem żeby skrypt do "target" przekazywał id kategori i żeby to mogła być każda liczba czyli nieważne czy ma dwa czy trzy znaki np 26, 245, 1... Lecz jak to zrobić? kombinuję i kombinuję ale tylko mi działa, gdy mam pojedyńczą liczbę taką jak np. 1, 2, 3, 4, 5... Przy liczbie 20, 30... Już nie działa bo liczba zawiera dwa znaki więc jak to zrobić, aby działało przy każdej liczbie poprawnie?
freemp3
Znajdź pierwsze wystąpienie w tekście podkreślenia. Następnie to co jest przed nim będzie id kategorii, a żeby dostać numer wystarczy wyciąć tekst pomijając pierwszy znak. Z numerem strony robisz podobnie, czyli szukasz podkreślenia i to co jest za nim jest numerem strony.
aleks365
"podkreślenia" nie rozumiem? Jak zrobię tak to liczba będzie mogła się składać z 2, 3 znaków i bedzie w całości przesyłana dalej? Nie będzie ucięta?
freemp3
Przy pomocy indexOf szukasz pierwszego podkreślenia. Następnie używając substring wycinasz z tekstu to co Cie interesuje. Podobnie robisz w przypadku pobierania numeru strony. Przykład:
Kod
// wycinamy id kategorii
var text = "#c16_pageCat_5;
var pos = text.indexOf("_");
var catId = parseInt(text.substring(2, pos)); // dla pewności parsujemy jako liczbę całkowitą

// wycinamy numer strony
var pos2 = text.indexOf("_", pos); // szukamy drugiego podkreślenia, zaczynamy od tego znalezionego wcześniej, w przeciwnym wypadku znów znajdziemy pierwsze.
var pageId = parseInt(text.substring(pos2)); // nie podajemy drugiego parametru poniewaz chcemy wyciac tekst do konca.


Pisane na szybko, więc nie daje 100% pewności, że zadziała.
aleks365
Poniekąd działa tak w 50% działa dlatego, że nie działa druga część czyli wycinanie numeru strony, ale może uda mi się dojść do tego jak to naprawić tak aby działało smile.gif
freemp3
Spróbuj:
Kod
var pageId = parseInt(text.substring(pos2 + 1));
aleks365
Jeśli dam + 9 to wtedy działa
Kod
var pageId = parseInt(text.substring(pos2 + 9));

Ale dlaczego tak się dzieje?
freemp3
Wycinanie numeru strony powinno wyglądać tak:
Kod
var pos2 = text.indexOf("_", pos + 1);
var pageId = parseInt(text.substring(pos2 + 1));

Dzieje się tak ponieważ w zmiennej pos oraz pos2 znajduje się pozycja podkreślenia. Wycinanie tekstu zaczyna się właśnie od tego miejsca i on też jest brany pod uwagę. Dlatego też przy pobieraniu pozycji drugiego podkreślenia do pos trzeba dodać 1, żeby zaczynało się od znaku następnego. To samo tyczy się wczytywania numeru strony.
aleks365
ok już wiem co i jak guitar.gif wielkie dzięki wink.gif
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.