Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

cacher des infos

22 réponses
Avatar
unbewusst.sein
j'ai une div qui va contenir la liste des catégories; issues d'une
requête sql.
dans le html j'affiche le nom, mais j'aimerais pouvoir lire (par DOM par
ex) l'index associé à ce nom sans le montrer.
Donc comment associer l'index à cette <li /> sans qu'il soit visible sur
le butineur ???

--
« La bouse de la vache est plus utile que les dogmes :
on peut en faire de l'engrais. »
(Mao Tsé-Toung / 1896-1976)

10 réponses

1 2 3
Avatar
Pascal Poncet
Le 23/08/2011 20:37, Une Bévue a écrit :
j'ai une div qui va contenir la liste des catégories; issues d'une
requête sql.
dans le html j'affiche le nom, mais j'aimerais pouvoir lire (par DOM par
ex) l'index associé à ce nom sans le montrer.
Donc comment associer l'index à cette<li /> sans qu'il soit visible sur
le butineur ???




Quand tu dis "visible", tu veux dire "affiché", je suppose.
Donc peu importe ce qui est visible dans le code source.
L'attribut "id", ça n'irait pas ?

--
Cordialement,
Pascal
Avatar
yamo'
Une Bévue a tapoté, le 23/08/2011 20:37:
j'ai une div qui va contenir la liste des catégories; issues d'une
requête sql.
dans le html j'affiche le nom, mais j'aimerais pouvoir lire (par DOM par
ex) l'index associé à ce nom sans le montrer.
Donc comment associer l'index à cette <li /> sans qu'il soit visible sur
le butineur ???



Je ne vois pas le pourquoi et le comment faire ça ; tout ce que tu
envoies au navigateur, le navigateur le voie par définition après on
n'est pas obligé de rendre tout visible par un humain non informaticien
donc l'idée de l'id du li de Pascal est tout à fait appropriée...




--
Stéphane

<http://pasdenom.info/fortune/>

Vérité dans un temps, erreur dans l'autre.
-+- Montesquieu -+-
Avatar
unbewusst.sein
Pascal Poncet wrote:

Quand tu dis "visible", tu veux dire "affiché", je suppose.


ouais.
Donc peu importe ce qui est visible dans le code source.
L'attribut "id", ça n'irait pas ?


peut-être, à condition de ruser afin d'éviter des doublons.
ou une classe bidon, plus élégant sans doute :
<li id="categories_1">...
...
<li id="categories_1">

ou la même chose avec des classes :
<li class="categories_1">...
...
<li class="categories_1">


--
« A quoi bon soulever des montagnes quand il est
si simple de passer par-dessus ? »
(Boris Vian)
Avatar
unbewusst.sein
yamo' wrote:

Je ne vois pas le pourquoi et le comment faire ça ; tout ce que tu
envoies au navigateur, le navigateur le voie par définition après on
n'est pas obligé de rendre tout visible par un humain non informaticien
donc l'idée de l'id du li de Pascal est tout à fait appropriée...



oui e, fait c'est pour que le contenu affiché soit plus lisible sans
infos inutiles, ce n'est pas pour le cacher en soi, dans le code je veux
dire, ca je m'en fiche.

l'idée de Pascal est pas mal en effet; mais je cherche un truc comme les
champs hidden dans une forme.
amha ca doit pouvoir se faire en css; avec un bloc; une div, n'importe
quoi en hidden.
--
« A quoi bon soulever des montagnes quand il est
si simple de passer par-dessus ? »
(Boris Vian)
Avatar
SAM
Le 23/08/11 22:52, Une Bévue a écrit :
Pascal Poncet wrote:

Quand tu dis "visible", tu veux dire "affiché", je suppose.


ouais.
Donc peu importe ce qui est visible dans le code source.
L'attribut "id", ça n'irait pas ?


peut-être, à condition de ruser afin d'éviter des doublons.
ou une classe bidon, plus élégant sans doute :
<li id="categories_1">...
...
<li id="categories_1">



c'est t'absolument t'interdit !

pas d'ids de mêmes noms !


ou la même chose avec des classes :
<li class="categories_1">...
...
<li class="categories_1">




<li>je suis normal</li>
<li><span>index 1</span>je suis spécial</li>
<li><span>index 2</span>moi z'ossi</li>


li span { display: none }

--
Stéphane Moriaux avec/with iMac-intel
Avatar
unbewusst.sein
SAM wrote:

c'est t'absolument t'interdit !

pas d'ids de mêmes noms !




oui; je sais, mon exemple est foireux !!!


> ou la même chose avec des classes :
> <li class="categories_1">...
> ...
> <li class="categories_1">


<li>je suis normal</li>
<li><span>index 1</span>je suis spécial</li>
<li><span>index 2</span>moi z'ossi</li>


li span { display: none }



Ah ben voila, c'est tout simple; je ,me disait auissi pourquoi ducros y
se décarcasse...
--
« Les seuls problèmes que l'argent peut résoudre sont
des problèmes d'argent. »
(Kin Hubbard)
Avatar
Pascal Poncet
Le 24/08/2011 08:21, Une Bévue a écrit :
SAM wrote:
<li>je suis normal</li>
<li><span>index 1</span>je suis spécial</li>
<li><span>index 2</span>moi z'ossi</li>

li span { display: none }



Ah ben voila, c'est tout simple; je ,me disait auissi pourquoi ducros y
se décarcasse...



Je te conseille quand même de coller une classe spécifique à ton "span"
invisible (ou plus précisément, non affiché), si tu retiens cette
solution, car cette balise pourrait te servir dans d'autres contextes.

Maintenant, on a peut-être pas assez d'éléments pour comprendre
exactement ton besoin et le recours à cette "astuce".

Par exemple, avec un contenu très hiérarchisé, voici ce qu'il m'est
arrivé de pondre, tout simplement :

<div id="cat_1">
<p id="subcat_1>...</p>
<p id="subcat_2>...</p>
...
</div>
<div id= cat_2>... etc.

ou encore :

<ul id="cat_1">
<li id="subcat_1>...</li>
<li id="subcat_2>...</li>
</ul>
<ul id="cat_2">... etc.

Par contre, dans une suite de résultats présentés en ligne (en
l'occurrence des petites annonces pro), si chaque résultat est affecté à
une catégorie et que plusieurs résultats peuvent faire partie de la même
catégorie (en l'occurrence la rubrique de l'annonce), on ne peut plus
utiliser les schémas précédents.

Ce que j'ai fait alors, c'est identifier chaque résultat par une
concaténation de son identifiant propre avec celui de sa catégorie.
Cela permet ensuite toute manipulation, côté client ou serveur, comme du
tri, masquage, etc.

Exemple, avec le schéma id="annonce_idRubrique_idAnnonce" :

<div id="listeAnnonces">
<p id="annonce_1_123>...</p>
<p id="annonce_3_789>...</p>
<p id="annonce_1_456>...</p>
... etc.
</div>

Très facile, ensuite de masquer, par javascript, les annonces de la
rubrique "1", par exemple.
Et aucune chance que deux identifiants soient identiques !


--
Cordialement,
Pascal
Avatar
unbewusst.sein
Pascal Poncet wrote:

Le 24/08/2011 08:21, Une Bévue a écrit :
> SAM wrote:
>> <li>je suis normal</li>
>> <li><span>index 1</span>je suis spécial</li>
>> <li><span>index 2</span>moi z'ossi</li>
>>
>> li span { display: none }
>
> Ah ben voila, c'est tout simple; je ,me disait auissi pourquoi ducros y
> se décarcasse...

Je te conseille quand même de coller une classe spécifique à ton "span"
invisible (ou plus précisément, non affiché), si tu retiens cette
solution, car cette balise pourrait te servir dans d'autres contextes.

Maintenant, on a peut-être pas assez d'éléments pour comprendre
exactement ton besoin et le recours à cette "astuce".



c'est très simple, dans une bd j'ai une table 'categories' avec deux
champs :
idx INTEGER NOT NULL
name TEXT NOT NULL

ce que je présente c'est "name" mais je souhaite avoir aussi "idx"
(l'index) de manière à pouvoir présenter une autre table "items" dont
chaque item appartient à une catégorie et dans cette dernière table,
c'est le champs "cat" qui donne l'index de la catégorie.

ainsi dans la seconde colonne (visuellement, en partant de la gauche) je
peux préenter tous les items qui appartient à cette catégorie en faisant
une requête sql du genre :

'SELECT * FROM items WHERE cat=idx;"
l'idx étant fourni par le li où on a cliqué moyennant petite manip dom.

Par exemple, avec un contenu très hiérarchisé, voici ce qu'il m'est
arrivé de pondre, tout simplement :

<div id="cat_1">
<p id="subcat_1>...</p>
<p id="subcat_2>...</p>
...
</div>
<div id= cat_2>... etc.

ou encore :

<ul id="cat_1">
<li id="subcat_1>...</li>
<li id="subcat_2>...</li>
</ul>
<ul id="cat_2">... etc.

Par contre, dans une suite de résultats présentés en ligne (en
l'occurrence des petites annonces pro), si chaque résultat est affecté à
une catégorie et que plusieurs résultats peuvent faire partie de la même
catégorie (en l'occurrence la rubrique de l'annonce), on ne peut plus
utiliser les schémas précédents.



je n'ai pas ce problème car je répète le même principe au niveau des
items où j'aurai "une variable cachée" qui me donnera son index.

Ce que j'ai fait alors, c'est identifier chaque résultat par une
concaténation de son identifiant propre avec celui de sa catégorie.
Cela permet ensuite toute manipulation, côté client ou serveur, comme du
tri, masquage, etc.

Exemple, avec le schéma id="annonce_idRubrique_idAnnonce" :

<div id="listeAnnonces">
<p id="annonce_1_123>...</p>
<p id="annonce_3_789>...</p>
<p id="annonce_1_456>...</p>
... etc.
</div>

Très facile, ensuite de masquer, par javascript, les annonces de la
rubrique "1", par exemple.
Et aucune chance que deux identifiants soient identiques !



je n'ai pas besoin de cela car ma recherche se fait par sql via php et
xhr.
la solution :
<li class="categorie">Formulaires<span class="cache">1</span></li>

avec
span.cache { hidden };

me va très bien.

vu qu"autour de "Formulaires<span class="cache">1</span>" je vais mettre
un a href, ou onclick sur le li qui va m'envoyer this dans lequel je
pourrai trouver le contenu du span cache et donc l'index.

--
« C'est aujourd'hui que commence le reste de ta vie. »
(Dale Carnegie)
Avatar
unbewusst.sein
Une Bévue wrote:

je n'ai pas besoin de cela car ma recherche se fait par sql via php et
xhr.
la solution :
<li class="categorie">Formulaires<span class="cache">1</span></li>



ce que j'ai mis dans le code php :
echo ' <li class="categorie" onlick="selectCat(this);return
false">'.$row['name'].'<span
class="cache">'.$row['idx'].'</span></li>'.$lf;

ce qui donne en html :
<li class="categorie" onlick="selectCat(this);return
false">Formulaires<span class="cache">0</span></li>

la function selectCat( n'est pas appellée :

function selectCat(o) {alert("toto")
alert(o.getElementsByTagName('span')[0].text);
}

--
« C'est aujourd'hui que commence le reste de ta vie. »
(Dale Carnegie)
Avatar
Pascal Poncet
Le 24/08/2011 12:10, Une Bévue a écrit :
la solution :
<li class="categorie">Formulaires<span class="cache">1</span></li>

avec
span.cache { hidden };



Tu veux peut-être dire :
span.cache { visibility: hidden; }

Mais dans ce cas, le contenu du <span> prendra sa place dans le flux !
Si tu veux qu'il ne soit pas affiché (différent de "invisible"), il faut
écrire :
span.cache { display: none; }


me va très bien.

vu qu"autour de "Formulaires<span class="cache">1</span>" je vais mettre
un a href, ou onclick sur le li qui va m'envoyer this dans lequel je
pourrai trouver le contenu du span cache et donc l'index.



Je crois avoir compris, mais alors il me semble plus simple de faire :

<ul class="categories">
<li id="cat_1">Formulaires</li>
...
</ul>

Au niveau CSS, déjà, tu remonte la classe au conteneur, ça évite les
répétitions inutiles, avec :
ul.categories li {...ton style d'item de liste...}

Ensuite, au niveau HTML et JS, tu ne devrais pas avoir de risque de
doublons sur les attributs "id", non ?

Enfin, avec JS, tu auras beaucoup plus de facilité (et de rapidité) à
récupérer l'id du <li> que le contenu du <span>, pour le balancer à XHR
ou autres.

Je pars du principe que tu auras géré un "onclick" sur chaque <li>.
Si tu préfère ajouter un lien explicite, alors il vaut mieux mettre l'id
sur le lien <a>, plutôt que sur le <li>.


--
Cordialement,
Pascal
1 2 3