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

Transformer du code html?

22 réponses
Avatar
yamo'
Bonsoir,

J'aurai besoin de transformer cette structure :

<ul>
<li><a href="lien1">titre1</a></li>
<li><a href="lien2">titre2</a></li>
...
</ul>

en :
<select>
<option value="lien1">titre1</option>
<option value="lien2">titre2</option>
...
</select>


J'aurai aimé obtenir directement la listbox mais pour une raison
incompréhensible, dans une view drupal6 je n'y arrive pas par contre, la
liste <ul><li> pas de problème!


Est-ce possible et comment?

Merci d'avance,

--
Stéphane
http://pasdenom.info/fortune

10 réponses

1 2 3
Avatar
Olivier Miakinen
Bonjour ?

Le 21/06/2009 23:05, yamo' a écrit :

J'aurai besoin de transformer cette structure :

<ul>
<li><a href="lien1">titre1</a></li>
<li><a href="lien2">titre2</a></li>
...
</ul>

en :
<select>
<option value="lien1">titre1</option>
<option value="lien2">titre2</option>
...
</select>



Et ça ne fonctionne pas ? Qu'est-ce qui ne marche pas ? Par ailleurs,
juste pour être sûr : tu l'as bien mis dans un formulaire ?

J'aurai aimé obtenir directement la listbox mais pour une raison
incompréhensible, dans une view drupal6 je n'y arrive pas par contre, la
liste <ul><li> pas de problème!



Je ne connais pas drupal6, ce qui explique peut-être mon incompréhension.

--
Olivier Miakinen
Avatar
SAM
Le 6/21/09 11:05 PM, yamo' a écrit :
Bonsoir,

J'aurai besoin de transformer cette structure :

<ul>
<li><a href="lien1">titre1</a></li>
<li><a href="lien2">titre2</a></li>
...
</ul>

en :
<select>
<option value="lien1">titre1</option>
<option value="lien2">titre2</option>
...
</select>


J'aurai aimé obtenir directement la listbox mais pour une raison
incompréhensible, dans une view drupal6 je n'y arrive pas par contre, la
liste <ul><li> pas de problème!


Est-ce possible et comment?



<script type="text/javascript">
function changeUlToSelect() {
var s, l, o, h,
u = document.getElementsByTagName('UL');
for(var i=0, n=u.length; n>i; i++) {
s = document.createElement('SELECT');
l = u[i].getElementsByTagName('LI');
for(var j=0, z=l.length; z>j; j++) {
h = l[j].getElementsByTagName('A')[0];
o = new Option(h.text, h.href);
s[s.length] = o;
}
s.onchange=function() {
alert(this.options[this.selectedIndex].value);};
u[i].parentNode.replaceChild(s, u[i]);
}
}
</script>
<ul>
<li><a href="lien1">titre1</a></li>
<li><a href="lien2">titre2</a></li>
</ul>
<p><button onclick="changeUlToSelect()">ul -> select</button>


Il faudra peut-être faire :
o = new Option(h.text, h.href.substring(h.href.lastIndexOf('/')+1));


Et comme Olivier : drupal6 ... inconnu au bataillon

Ha !? c'est un CMS ? embarquant jQuery ?

Alors ... peut-être voir du côté
- du PHP de dupra ?
ou
- de jQuery si c'est à faire coté client.
(bien que mon truc ci-haut fonctionne chez moi)
(pas testé IE, mais yapas d'raison que ça y foire)

--
sm
Avatar
Olivier Miakinen
Le 22/06/2009 01:18, SAM a écrit :

[ code JavaScript pour répondre à la question de yamo ]





Ah oui, désolé, je n'avais pas vu qu'on était dans fclj : je me croyais
dans fciwa.

--
Olivier Miakinen
Avatar
Bruno Desthuilliers
yamo' a écrit :
Bonsoir,

J'aurai besoin de transformer cette structure :

<ul>
<li><a href="lien1">titre1</a></li>
<li><a href="lien2">titre2</a></li>
...
</ul>

en :
<select>
<option value="lien1">titre1</option>
<option value="lien2">titre2</option>
...
</select>


J'aurai aimé obtenir directement la listbox mais pour une raison
incompréhensible, dans une view drupal6 je n'y arrive pas par contre, la
liste <ul><li> pas de problème!


Est-ce possible et comment?



C'est bien sûr possible en javascript (à condition bien sûr que le
navigateur ait un support javascript et que celui-ci soit activé), mais
c'est une *très mauvaise* idée (cf les conditions ci-avant). Demande
plutôt de l'aide sur un forum drupal pour régler le problème proprement,
c'est à dire en générant le code HTML qui va bien à la source...
Avatar
SAM
Le 6/22/09 9:32 AM, Olivier Miakinen a écrit :
Le 22/06/2009 01:18, SAM a écrit :
[ code JavaScript pour répondre à la question de yamo ]





Ah oui, désolé, je n'avais pas vu qu'on était dans fclj : je me croyais
dans fciwa.



Et ?
Ça annulerait tes remarques pertinentes ?
Avatar
Olivier Miakinen
Le 22/06/2009 11:10, SAM m'a répondu :

Ah oui, désolé, je n'avais pas vu qu'on était dans fclj : je me croyais
dans fciwa.



Et ?
Ça annulerait tes remarques pertinentes ?



Disons que cela rend d'autant plus pertinente la remarque de Bruno :
faire la manip avant génération du code HTML (ce dont je croyais qu'il
était question) plutôt qu'en JavaScript.
Avatar
yamo'
Salut,

SAM a tapoté, le 22/06/2009 01:18:

Et comme Olivier : drupal6 ... inconnu au bataillon

Ha !? c'est un CMS ? embarquant jQuery ?



Oui c'est un CMS <http://drupal.org/> ,
<http://drupal.org/project/views> et étrangement j'arrive à lui faire
cracher une liste de nodes via ul li ou une simple liste mais pas un
select option même à la main (sauf en dur mais ça n'a aucun intérêt).
Comme il vérifie le code il doit trouver mon code html pas à son goût :
il y a possibilité de mettre du jquery mais je n'ai jamais testé et je
préférerais éviter les problèmes de conflits entre les nombreux modules
déjà présents.


Merci beaucoup pour le code, je le teste dès que possible cet après midi :)

--
Stéphane
http://pasdenom.info/fortune
Avatar
yamo'
Salut,

Olivier Miakinen a tapoté, le 22/06/2009 00:13:
Et ça ne fonctionne pas ? Qu'est-ce qui ne marche pas ? Par ailleurs,
juste pour être sûr : tu l'as bien mis dans un formulaire ?



Oui et ça fonctionne si je met le code en dur dans un bloc sans passer
par le module qui fais ça automatiquement, c'est soit lui le coupable
soit je n'ai pas compris comment le faire avec ce module view.

Si j'essaie avec ce module view, j'ai mon formulaire mais le select
option est vide de toute donnée dynamique aussi j'essaie de trouver une
solution de contournement car j'ai déjà passé un temps beaucoup trop
long sur ce problème.

Et ce module view fonctionne très bien dans tous les autres cas sauf
pour sortir un bête select option dans un formulaire de plus il n'y a
pas d'autre formulaire existant!


Merci beaucoup de t'intéresser à mon problème ; je ne peux pas donner
encore d'exemple précis vu que le site n'est pas encore en production.

--
Stéphane
http://pasdenom.info/fortune
Avatar
SAM
Le 6/22/09 12:13 PM, yamo' a écrit :
Salut,

SAM a tapoté, le 22/06/2009 01:18:

Et comme Olivier : drupal6 ... inconnu au bataillon

Ha !? c'est un CMS ? embarquant jQuery ?



Oui c'est un CMS <http://drupal.org/> ,



Je hais ces machineries infernales.
Déjà que leur site n'est pas rapide rapide, en plus si on veut la
documentation "officielle" il faut :
- installer tout le toutim
- installer des helps
- et j'en passe et loupe certainement.

Et en plus y causent pas français.

Ça commence bien !
"Some SQL queries are difficult to replicate in Views."
Nous v'là bôs (et loin loin loin du JS ...)
Et puis ... ça ne nous avance guère sur la route de la création de code
html pour un select.

De ttes façons tout se fait à l'aveugle si j'en crois :
"If you make a page view of your tabbed view, then you can study the
source code in your browser and learn where you might further customize
your css."
On fait sa page-view (comment? où? mystère) et il faut l'ouvrir dans un
navigateur pour voir comme elle est mal foutue !?
Médekicemokton ? Y a pas de visualisateur de code en simultané ?

<http://drupal.org/node/242311>
Pour moi ça ce ne sont que des infos publicitaires.

Où est le mode d'emploi ? Scrogneugneu ! sametue :-(

Ha! Un exemple trouvé par hasard:
<http://drupal.org/node/229934>
ça concernerait les CSS du tabbed-view ci-haut.
Est-ce que
.view-content-myview ul.anchors
est du language 'dupral' ?
Ils me disent de personnaliser 'myview'
mais rien pour '.anchors'

Moi, normalement, dans mes CSS je fais bêtement :
#menu li a { blabla }
Je n'ai pas besoin d'un bataillon de classes.

Encore un coup pour satisfaire jQuery ?
Je hais jQuery.

Enfin breffle ... tout ça pour dire :
- je n'y comprends queue d'chi
- je ne veux pas avoir à y comprendre
- j'ai dans l'idée qu'il vaudrait mieux s'adresser à un forum dédié.

Merci beaucoup pour le code, je le teste dès que possible cet après midi :)



Comme dit par ailleurs : à ne pas utiliser !
J'ai répondu en JS à une question posée dans un NG pour le JS.
(sans m'intéresser au contexte auquel je n'entrave rien).

Assurément, ce n'est certainement pas comme ça qu'il doit falloir créer
sa view-page-formulaire-queriée-en-SQL-via-des-CVS
(et-j'en-passe-et-des-meilleurs) ...

--
sm
Avatar
Yamo'
Salut,

Le 22/06/2009 13:58, SAM a écrit:
Le 6/22/09 12:13 PM, yamo' a écrit :




Merci beaucoup pour le code, je le teste dès que possible cet aprè s
midi :)



Comme dit par ailleurs : à ne pas utiliser !




Je sais qu'il y a certainement plus logique et plus élégant comme
solution mais ça fonctionne...

De plus pour les navigateurs sans javascript, il a le <ol> <li> fonctionn el!

Voici comment j'ai modifié ton code qui me sauve temporairement, je me
suis trompé ce n'est pas des <ul> mais des <ol>:

<script type="text/javascript">
function changeUlToSelect() {
var s, l, o, h,
u = document.getElementsByTagName('OL');
for(var i=0, n=u.length; n>i; i++) {
s = document.createElement('SELECT');
o = new Option('Nos formations', '#');
s[s.length] = o;
l = u[i].getElementsByTagName('LI');
for(var j=0, z=l.length; z>j; j++) {
h = l[j].getElementsByTagName('A')[0];
o = new Option(h.text, h.href);
s[s.length] = o;
}
s.onchange=function() {
// alert(this.options[this.selectedIndex].value);};
document.location=this.options[this.selectedIndex].value;};
u[i].parentNode.replaceChild(s, u[i]);
}
}
</script>


Mais je vais avoir besoin de cette manipulation plusieurs fois aussi je
vais passer par les ID mais je n'arrive pas à modifier ton code :(

L'ID qui m'intéresse c'est
"block-views-99a54984bb3584d5e9dbae4bd4bb1a0b" et donc le h3 pour créer
le premier option puis les <ol> <li>

Voici le code HTML :
<div id="block-views-99a54984bb3584d5e9dbae4bd4bb1a0b"
class="block block-views odd footer_block">
<div class="block-inner">
<h3 class="title block-title">Formations</h3>
<div class="content">
<div class="view view-block-titres-liens-formations
view-id-block_titres_liens_formations view-display-id-block_1
view-dom-id-1">
<div class="view-content">
<div class="item-list">
<ol>
<li class="views-row views-row-1 views-row-odd views-row-first">
<span class="views-field-title">
<span class="field-content">
<a class="active" alt="Formation BIRT" title="Formation BIRT"
href="/fr/content/formation-birt">Formation BIRT</a>
</span>
</span>
</li>
.....
1 2 3