Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]->[dom] Przekazywanie zmiennych
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Coach
Problem być może jest trywialny.

Chodzi o to, iż często spotykam się z sytuacją, gdzie muszę z poziomu php przekazać sobie kilka zmiennych opisujących dany znacznik, które potem będę używał w js.

Przykładowo:
- mam pole input i chcę przekazać informacje o sposobie walidacji (typ_walidacji, min_dlugosc, max_dlugosc, komunikat_bledu).
- mam pole select i zestaw opcji, chcę w opcjach schować informację umożliwiające po naciśnięciu przycisku ułożenie ich w drzewko.

I tu pytanie - jaki kod html stworzyć w php, by te zmienne sobie schować, nie naprodukować zbędnego kodu html albo nie spowolnić zbytnio strony, i by były dostępne z poziomu DOM we wszystkich przeglądarkach?

Aktualnie dane serializuję i chowam w rzadko używanym lang, natomiast denerwuje mnie używanie czegoś niezgodnie z przeznaczeniem.
Chowanie zmiennych w polu #id mija się z celem i przeznaczeniem identyfikatora.
Dodawanie class jest dobre na flagi, ale nie na stringi, do tego może narobić bałaganu w cssach.
Produkowanie dla każdego znacznika sparowanego hiddena to przsadna nadmiarowość.

Problem, sądzę, jest na tyle powszechny, że musi istnieć prawidłowe i dedykowane jego rozwiązanie, bez zbędnej kombinatoryki.

Będę wdzieczny za sugestie.
Master Pain
Zrób sobie 'namespace' (przestrzeń nazw, umownie oczywiście, bo chodzi o lekką modyfikację nazewnictwa klas dla uniknięcia konfliktu z klasami odpowiedzialnymi za wygląd strony) dla klas, np. 'desc-min-width', gdzie 'desc' to właśnie ta umowna przestrzeń nazw. Tak np. sprawę załatwia lightbox w jQuery, ma swoje 'przedrostki' w nazwach klas, zatem można uznać to za prawidłowe i dedykowane rozwiązanie smile.gif

Pozdrawiam!
Coach
Ok, czyli jeśli chcę zapisać sobie informację, iż typ walidacji to znaki alfanumeryczne mogę nadać klasę desc-alphanr. To ok i użyteczne
bo od razu daje użyteczny i zależny od typu selektor do przyszłych zastosowań.

Jeśli chcę zapisać, że minimalna długość to 5 znaków to użyję klasy desc-min_5, by się do tego dobrać muszę wyciągnąć całe className,
explodować klasy, wyszukać tę zaczynającą się na desc-min, explodować po _ i dopiero mam wartość - tu już trochę roboty jest.

Zmienna string (po odpowiednim podmienieniu spacji i znaków specjalnych) da już klasę-potworka.

Jak nagromadzenie klas w elemencie wpłynie na wydajność? Prędkość interpretacji css, jQuery które musi
te wszystkie nadmiarowe selektory sprawdzać, to może nieco spowolnić?

Master Pain
Ale ten explode po klasach robisz tylko raz i masz wszystko w tablicy. W czym problem winksmiley.jpg A wydajność... no cóż, sam chciałeś takie rozwiązanie. Trochę nie na temat, ale nie lepiej użyć Zend_Form ?

Pozdrawiam!
erix
Cytat
I tu pytanie - jaki kod html stworzyć w php, by te zmienne sobie schować, nie naprodukować zbędnego kodu html albo nie spowolnić zbytnio strony, i by były dostępne z poziomu DOM we wszystkich przeglądarkach?

JSON. Do jQuery był jeszcze taki plugin, który przechowywał metadane w atrybutach class. ;]

Moim zdaniem, najlepszy tu będzie JSON - interplatformowy, radzą sobie wszystkie przeglądarki, PHP również.
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.