Bonjour,
Regardez à l'adresse suivante:
http://www.contentbox.com/claude/test/testEvent.htm
Le script parcoure tous les éléments du document, et pour chaque élément de
liste LI,
il lui assigne un événement de type onmouseover
La fonction appelée par l'événement vérifie le nom de balise de l'objet, ça
devrait toujours être
un LI, mais ô surprise, des fois l'objet est le UL, et dans ce cas une
alarme est déclenchée.
Comment se peut-ce, puisqu'aucun UL n'a d'événement attaché ? Bizarre hein
?
Promenez la souris sur le menu, et tout d'un coup, pouf ! C'est un UL qui
déclenche.
Le plus curieux, c'est que Mords-y-la semble avoir le même problème.
Si c'est un comportement normal, j'aimerais bien en avoir une explication.
Merci.
Voilà le code :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Untitled</title>
<STYLE>
ul {
background-color: #B9D2FF;
margin:0px;
padding: 0;
position:absolute;
border: solid 1px #AAAAAA;
}
ul li {
width: 125px;
margin: 0;
padding: 0;
background-color: #628BFF;
color: #DFE6F5;
border: 1px outset;
list-style: none;
}
UL LI UL {
left:110px;
top:5px;
}
</STYLE>
</head>
<body>
<UL id="0">
<li id="1">item 1
<UL id="1.0">
<li id="1.1">item 1.1</li>
<li id="1.3">item 1.3</li>
<li id="1.4">item 1.4</li>
</ul></li>
<li id="2">item 2</li>
<li id="3">item 3</li>
<li id="4">item 4</li>
</ul>
<SCRIPT>
function init(m)
{
var el = m.childNodes;
for (var l = 0; l<el.length; l++)
{
if(el[l].tagName)
{
var tag = el[l].tagName.toLowerCase();
if (tag == "ul")
{
//do not attach event if UL container, but process its LIs
init (el[l]);
}
else if (tag == "li")
{
//attach event to list element ONLY
if(document.all)el[l].attachEvent('onmouseover', show);
else el[l].addEventListener("mouseover", show, false);
init (el[l]);
}
}
}
}
function show(e)
{
var li;
if (document.all)li=event.srcElement;
else li=e.target;
if (li.tagName != "LI")alert("over" + li.id + " : tag is " +
li.tagName);
}
init(document.body);
</SCRIPT>
</body>
</html>
Bonjour,
Regardez à l'adresse suivante:
http://www.contentbox.com/claude/test/testEvent.htm
Le script parcoure tous les éléments du document, et pour chaque élément de
liste LI,
il lui assigne un événement de type onmouseover
La fonction appelée par l'événement vérifie le nom de balise de l'objet, ça
devrait toujours être
un LI, mais ô surprise, des fois l'objet est le UL, et dans ce cas une
alarme est déclenchée.
Comment se peut-ce, puisqu'aucun UL n'a d'événement attaché ? Bizarre hein
?
Promenez la souris sur le menu, et tout d'un coup, pouf ! C'est un UL qui
déclenche.
Le plus curieux, c'est que Mords-y-la semble avoir le même problème.
Si c'est un comportement normal, j'aimerais bien en avoir une explication.
Merci.
Voilà le code :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Untitled</title>
<STYLE>
ul {
background-color: #B9D2FF;
margin:0px;
padding: 0;
position:absolute;
border: solid 1px #AAAAAA;
}
ul li {
width: 125px;
margin: 0;
padding: 0;
background-color: #628BFF;
color: #DFE6F5;
border: 1px outset;
list-style: none;
}
UL LI UL {
left:110px;
top:5px;
}
</STYLE>
</head>
<body>
<UL id="0">
<li id="1">item 1
<UL id="1.0">
<li id="1.1">item 1.1</li>
<li id="1.3">item 1.3</li>
<li id="1.4">item 1.4</li>
</ul></li>
<li id="2">item 2</li>
<li id="3">item 3</li>
<li id="4">item 4</li>
</ul>
<SCRIPT>
function init(m)
{
var el = m.childNodes;
for (var l = 0; l<el.length; l++)
{
if(el[l].tagName)
{
var tag = el[l].tagName.toLowerCase();
if (tag == "ul")
{
//do not attach event if UL container, but process its LIs
init (el[l]);
}
else if (tag == "li")
{
//attach event to list element ONLY
if(document.all)el[l].attachEvent('onmouseover', show);
else el[l].addEventListener("mouseover", show, false);
init (el[l]);
}
}
}
}
function show(e)
{
var li;
if (document.all)li=event.srcElement;
else li=e.target;
if (li.tagName != "LI")alert("over" + li.id + " : tag is " +
li.tagName);
}
init(document.body);
</SCRIPT>
</body>
</html>
Bonjour,
Regardez à l'adresse suivante:
http://www.contentbox.com/claude/test/testEvent.htm
Le script parcoure tous les éléments du document, et pour chaque élément de
liste LI,
il lui assigne un événement de type onmouseover
La fonction appelée par l'événement vérifie le nom de balise de l'objet, ça
devrait toujours être
un LI, mais ô surprise, des fois l'objet est le UL, et dans ce cas une
alarme est déclenchée.
Comment se peut-ce, puisqu'aucun UL n'a d'événement attaché ? Bizarre hein
?
Promenez la souris sur le menu, et tout d'un coup, pouf ! C'est un UL qui
déclenche.
Le plus curieux, c'est que Mords-y-la semble avoir le même problème.
Si c'est un comportement normal, j'aimerais bien en avoir une explication.
Merci.
Voilà le code :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Untitled</title>
<STYLE>
ul {
background-color: #B9D2FF;
margin:0px;
padding: 0;
position:absolute;
border: solid 1px #AAAAAA;
}
ul li {
width: 125px;
margin: 0;
padding: 0;
background-color: #628BFF;
color: #DFE6F5;
border: 1px outset;
list-style: none;
}
UL LI UL {
left:110px;
top:5px;
}
</STYLE>
</head>
<body>
<UL id="0">
<li id="1">item 1
<UL id="1.0">
<li id="1.1">item 1.1</li>
<li id="1.3">item 1.3</li>
<li id="1.4">item 1.4</li>
</ul></li>
<li id="2">item 2</li>
<li id="3">item 3</li>
<li id="4">item 4</li>
</ul>
<SCRIPT>
function init(m)
{
var el = m.childNodes;
for (var l = 0; l<el.length; l++)
{
if(el[l].tagName)
{
var tag = el[l].tagName.toLowerCase();
if (tag == "ul")
{
//do not attach event if UL container, but process its LIs
init (el[l]);
}
else if (tag == "li")
{
//attach event to list element ONLY
if(document.all)el[l].attachEvent('onmouseover', show);
else el[l].addEventListener("mouseover", show, false);
init (el[l]);
}
}
}
}
function show(e)
{
var li;
if (document.all)li=event.srcElement;
else li=e.target;
if (li.tagName != "LI")alert("over" + li.id + " : tag is " +
li.tagName);
}
init(document.body);
</SCRIPT>
</body>
</html>
le problème vient du fait que l'élément LI ne peut pas servir de
conteneur
le problème vient du fait que l'élément LI ne peut pas servir de
conteneur
le problème vient du fait que l'élément LI ne peut pas servir de
conteneur
le problème vient du fait que l'élément LI ne peut pas servir de
conteneur
Euh ? Servir de conteneur pour quoi au juste ?
Aussi, je sais que pour un LI la fermeture est facultative, mais
naturellement, si je les enlève,
ça ne change rien. Le problème ne vient donc pas de là.
C'est quand même fatigant de se dire que lorsqu'un événement assigné à un
objet est déclenché, il faut
à chaque fois vérifier s'il provient bien de cet objet.
le problème vient du fait que l'élément LI ne peut pas servir de
conteneur
Euh ? Servir de conteneur pour quoi au juste ?
Aussi, je sais que pour un LI la fermeture est facultative, mais
naturellement, si je les enlève,
ça ne change rien. Le problème ne vient donc pas de là.
C'est quand même fatigant de se dire que lorsqu'un événement assigné à un
objet est déclenché, il faut
à chaque fois vérifier s'il provient bien de cet objet.
le problème vient du fait que l'élément LI ne peut pas servir de
conteneur
Euh ? Servir de conteneur pour quoi au juste ?
Aussi, je sais que pour un LI la fermeture est facultative, mais
naturellement, si je les enlève,
ça ne change rien. Le problème ne vient donc pas de là.
C'est quand même fatigant de se dire que lorsqu'un événement assigné à un
objet est déclenché, il faut
à chaque fois vérifier s'il provient bien de cet objet.
Quand la fermeture d'un élément est facultative celà implique que
celui-ci ne peut pas servir de conteneur
Quand la fermeture d'un élément est facultative celà implique que
celui-ci ne peut pas servir de conteneur
Quand la fermeture d'un élément est facultative celà implique que
celui-ci ne peut pas servir de conteneur
Quand la fermeture d'un élément est facultative celà implique que
celui-ci ne peut pas servir de conteneur
Ah bon ? Et depuis quand ?
Un LI peut contenir une autre liste, même une table, en fait n'importe quoi,
c'est en toutes lettres dans le standard HTML.
Le fait qu'une fermeture soit facultative vient seulement du fait que la
fermeture est impliquée automatiquement par le contexte;
dans le cas d'un LI, celui-ci est automatiquement fermé par le premier </UL>
Même chose pour l'OPTION qui est implicitement fermée par une autre OPTION ou
la fermeture du SELECT.
Une OPTION ne peut contenir une liste, mais ça n'a rien à voir avec la
fermeture facultative.
Quand la fermeture d'un élément est facultative celà implique que
celui-ci ne peut pas servir de conteneur
Ah bon ? Et depuis quand ?
Un LI peut contenir une autre liste, même une table, en fait n'importe quoi,
c'est en toutes lettres dans le standard HTML.
Le fait qu'une fermeture soit facultative vient seulement du fait que la
fermeture est impliquée automatiquement par le contexte;
dans le cas d'un LI, celui-ci est automatiquement fermé par le premier </UL>
Même chose pour l'OPTION qui est implicitement fermée par une autre OPTION ou
la fermeture du SELECT.
Une OPTION ne peut contenir une liste, mais ça n'a rien à voir avec la
fermeture facultative.
Quand la fermeture d'un élément est facultative celà implique que
celui-ci ne peut pas servir de conteneur
Ah bon ? Et depuis quand ?
Un LI peut contenir une autre liste, même une table, en fait n'importe quoi,
c'est en toutes lettres dans le standard HTML.
Le fait qu'une fermeture soit facultative vient seulement du fait que la
fermeture est impliquée automatiquement par le contexte;
dans le cas d'un LI, celui-ci est automatiquement fermé par le premier </UL>
Même chose pour l'OPTION qui est implicitement fermée par une autre OPTION ou
la fermeture du SELECT.
Une OPTION ne peut contenir une liste, mais ça n'a rien à voir avec la
fermeture facultative.
Un LI peut contenir une autre liste, même une table, en fait n'importe
quoi, c'est en toutes lettres dans le standard HTML.
Non les LI sont des éléments de listes ... les listes ce sont des OL,
UL, DIR, ... qui elles ont une fermeture obligatoire.
J'insiste : vous avez mal compris
Un LI peut contenir une autre liste, même une table, en fait n'importe
quoi, c'est en toutes lettres dans le standard HTML.
Non les LI sont des éléments de listes ... les listes ce sont des OL,
UL, DIR, ... qui elles ont une fermeture obligatoire.
J'insiste : vous avez mal compris
Un LI peut contenir une autre liste, même une table, en fait n'importe
quoi, c'est en toutes lettres dans le standard HTML.
Non les LI sont des éléments de listes ... les listes ce sont des OL,
UL, DIR, ... qui elles ont une fermeture obligatoire.
J'insiste : vous avez mal compris
Un LI peut contenir une autre liste, même une table, en fait n'importe
quoi, c'est en toutes lettres dans le standard HTML.Non les LI sont des éléments de listes ... les listes ce sont des OL,
UL, DIR, ... qui elles ont une fermeture obligatoire.
Si je me réfère au lien cité par vous-même, je lis :
« Lists may also be nested:
DEPRECATED EXAMPLE: (Ce qui est "deprecated" ici, c'est l'attribut start)
<UL>
<LI> ... Level one, number one...
<OL>
<LI> ... Level two, number one...
<LI> ... Level two, number two...
<OL start="10">
<LI> ... Level three, number one...
</OL>
<LI> ... Level two, number three...
</OL>
<LI> ... Level one, number two...
</UL>
Il n'y a pas une liste dans un LI ici ?
J'insiste : vous avez mal compris
Ah bon...
Moi je crois que vous confondez entre :
Container tags: require or optionally require a closing tag.
Ex : H1, B, I, TABLE, TR, TD, UL, OL etc. (fermeture obligatoire);
ou encore : P, LI, OPTION, etc. (fermeture facultative);
et :
Non-container tags: Must not have a closing tag.
Ex: BR, HR, IMG
De plus, les UL, OL et autres sont AUSSI appelés « liste elements », au même
titre que le LI.
Voir par exemple : http://www.fuzzylu.com/docs/html/p000gloss.htm
Et de plus, et de toute façon, je ne vois pas ce que cela peut avoir à voir
avec le déclenchement inopiné
d'événements sur des objets, que ceux-cis soient « container » ou non.
Un événement de type « onmouseon » est légal sur un objet LI comme sur un UL.
Ce qui est anormal, c'est qu'un événement déclaré pour un LI se retrouve de
temps en temps sur un UL.
Un LI peut contenir une autre liste, même une table, en fait n'importe
quoi, c'est en toutes lettres dans le standard HTML.
Non les LI sont des éléments de listes ... les listes ce sont des OL,
UL, DIR, ... qui elles ont une fermeture obligatoire.
Si je me réfère au lien cité par vous-même, je lis :
« Lists may also be nested:
DEPRECATED EXAMPLE: (Ce qui est "deprecated" ici, c'est l'attribut start)
<UL>
<LI> ... Level one, number one...
<OL>
<LI> ... Level two, number one...
<LI> ... Level two, number two...
<OL start="10">
<LI> ... Level three, number one...
</OL>
<LI> ... Level two, number three...
</OL>
<LI> ... Level one, number two...
</UL>
Il n'y a pas une liste dans un LI ici ?
J'insiste : vous avez mal compris
Ah bon...
Moi je crois que vous confondez entre :
Container tags: require or optionally require a closing tag.
Ex : H1, B, I, TABLE, TR, TD, UL, OL etc. (fermeture obligatoire);
ou encore : P, LI, OPTION, etc. (fermeture facultative);
et :
Non-container tags: Must not have a closing tag.
Ex: BR, HR, IMG
De plus, les UL, OL et autres sont AUSSI appelés « liste elements », au même
titre que le LI.
Voir par exemple : http://www.fuzzylu.com/docs/html/p000gloss.htm
Et de plus, et de toute façon, je ne vois pas ce que cela peut avoir à voir
avec le déclenchement inopiné
d'événements sur des objets, que ceux-cis soient « container » ou non.
Un événement de type « onmouseon » est légal sur un objet LI comme sur un UL.
Ce qui est anormal, c'est qu'un événement déclaré pour un LI se retrouve de
temps en temps sur un UL.
Un LI peut contenir une autre liste, même une table, en fait n'importe
quoi, c'est en toutes lettres dans le standard HTML.Non les LI sont des éléments de listes ... les listes ce sont des OL,
UL, DIR, ... qui elles ont une fermeture obligatoire.
Si je me réfère au lien cité par vous-même, je lis :
« Lists may also be nested:
DEPRECATED EXAMPLE: (Ce qui est "deprecated" ici, c'est l'attribut start)
<UL>
<LI> ... Level one, number one...
<OL>
<LI> ... Level two, number one...
<LI> ... Level two, number two...
<OL start="10">
<LI> ... Level three, number one...
</OL>
<LI> ... Level two, number three...
</OL>
<LI> ... Level one, number two...
</UL>
Il n'y a pas une liste dans un LI ici ?
J'insiste : vous avez mal compris
Ah bon...
Moi je crois que vous confondez entre :
Container tags: require or optionally require a closing tag.
Ex : H1, B, I, TABLE, TR, TD, UL, OL etc. (fermeture obligatoire);
ou encore : P, LI, OPTION, etc. (fermeture facultative);
et :
Non-container tags: Must not have a closing tag.
Ex: BR, HR, IMG
De plus, les UL, OL et autres sont AUSSI appelés « liste elements », au même
titre que le LI.
Voir par exemple : http://www.fuzzylu.com/docs/html/p000gloss.htm
Et de plus, et de toute façon, je ne vois pas ce que cela peut avoir à voir
avec le déclenchement inopiné
d'événements sur des objets, que ceux-cis soient « container » ou non.
Un événement de type « onmouseon » est légal sur un objet LI comme sur un UL.
Ce qui est anormal, c'est qu'un événement déclaré pour un LI se retrouve de
temps en temps sur un UL.
Ben non ... l'exemple est assez clair pourtant :-)
C'est une UL qui contient une OL qui elle même contient une OL.
Ben non ... l'exemple est assez clair pourtant :-)
C'est une UL qui contient une OL qui elle même contient une OL.
Ben non ... l'exemple est assez clair pourtant :-)
C'est une UL qui contient une OL qui elle même contient une OL.
Ben non ... l'exemple est assez clair pourtant :-)
C'est une UL qui contient une OL qui elle même contient une OL.
Les LI sont les éléments de la liste UL et des deux listes OL ...
Erreur : l'OL n'est pas contenue directement dans l'UL,
mais dans le LI du UL,
et le 2e OL
est contenu dans le LI du premier OL.
C'est parce que les </LI> ont été omis que vous
confondez,
c'est pour ça que moi je les mets toujours,
ça rend la structure plus claire.
On trouve partout des exemples de "nested lists", il suffit de chercher :
http://css.maxdesign.com.au/listutorial/sub01.htm
http://www.simplebits.com/notebook/2003/10/19/styling_nested_lists.html
http://www.webdevtips.com/webdevtips/html/nested_lists.shtml
http://www.howtocreate.co.uk/tutorials/jsexamples/listCollapseExample.html
.....
Tous avec les fermetures des LI pour que ce soit plus clair.
... je crois qu'un coup d'oeil à ces "tutorials" vous serait des plus
profitables ;-))
La question reste donc ouverte : pourquoi ces faux évènements sur les UL
auxquels on n'a rien demandé ?
Ben non ... l'exemple est assez clair pourtant :-)
C'est une UL qui contient une OL qui elle même contient une OL.
Les LI sont les éléments de la liste UL et des deux listes OL ...
Erreur : l'OL n'est pas contenue directement dans l'UL,
mais dans le LI du UL,
et le 2e OL
est contenu dans le LI du premier OL.
C'est parce que les </LI> ont été omis que vous
confondez,
c'est pour ça que moi je les mets toujours,
ça rend la structure plus claire.
On trouve partout des exemples de "nested lists", il suffit de chercher :
http://css.maxdesign.com.au/listutorial/sub01.htm
http://www.simplebits.com/notebook/2003/10/19/styling_nested_lists.html
http://www.webdevtips.com/webdevtips/html/nested_lists.shtml
http://www.howtocreate.co.uk/tutorials/jsexamples/listCollapseExample.html
.....
Tous avec les fermetures des LI pour que ce soit plus clair.
... je crois qu'un coup d'oeil à ces "tutorials" vous serait des plus
profitables ;-))
La question reste donc ouverte : pourquoi ces faux évènements sur les UL
auxquels on n'a rien demandé ?
Ben non ... l'exemple est assez clair pourtant :-)
C'est une UL qui contient une OL qui elle même contient une OL.
Les LI sont les éléments de la liste UL et des deux listes OL ...
Erreur : l'OL n'est pas contenue directement dans l'UL,
mais dans le LI du UL,
et le 2e OL
est contenu dans le LI du premier OL.
C'est parce que les </LI> ont été omis que vous
confondez,
c'est pour ça que moi je les mets toujours,
ça rend la structure plus claire.
On trouve partout des exemples de "nested lists", il suffit de chercher :
http://css.maxdesign.com.au/listutorial/sub01.htm
http://www.simplebits.com/notebook/2003/10/19/styling_nested_lists.html
http://www.webdevtips.com/webdevtips/html/nested_lists.shtml
http://www.howtocreate.co.uk/tutorials/jsexamples/listCollapseExample.html
.....
Tous avec les fermetures des LI pour que ce soit plus clair.
... je crois qu'un coup d'oeil à ces "tutorials" vous serait des plus
profitables ;-))
La question reste donc ouverte : pourquoi ces faux évènements sur les UL
auxquels on n'a rien demandé ?
ben non ... je rajoute les fermetures :
<UL>
<LI> ... Level one, number one...</LI>
<OL>
<LI> ... Level two, number one...</LI>
<LI> ... Level two, number two...</LI>
<OL start="10">
<LI> ... Level three, number one...</LI>
</OL>
<LI> ... Level two, number three...</LI>
</OL>
<LI> ... Level one, number two...</LI>
</UL>
Les LI "Level one" sont des éléments de la liste UL.
Les LI "Level two" sont des éléments de première la liste OL.
Les LI "Level three" sont des éléments de la seconde liste OL.
Les LI ne contiennent rien ... et les 2 OL sont contenues dans l'UL ...
Vous faites vos fermetures autrement ? ...
Bon, alors si je soumets votre code au valideur officiel du W3C :
Bon ... d'abord ce n'est pas parcequ'on le lit partout que c'est vrai
:-) (c'est un lieu commun) et je préfère un lien issu d'un standard
pour confirmer.
Je dois dire que pour moi les LI ont tjrs été des éléments de liste et
que de plus ceux ci devaient être inclu dans un bloc de liste (ol, ul,
dir, menu ...) ... je n'aurais donc jamais eu l'idée de mettre une
liste dans un élément de liste (dans une LI racine) ...
(là je me rapproche d'un méa culpa :-) )
Admettons que je raconte des âneries depuis le début.
ou (pour conserver votre code tel quel, sans modifications dans la
feuille de style) en englobant les listes dans une SPAN par ex., le
code donne le résultat escompté et fonctionne correctement (cf code ci
dessous).
ben non ... je rajoute les fermetures :
<UL>
<LI> ... Level one, number one...</LI>
<OL>
<LI> ... Level two, number one...</LI>
<LI> ... Level two, number two...</LI>
<OL start="10">
<LI> ... Level three, number one...</LI>
</OL>
<LI> ... Level two, number three...</LI>
</OL>
<LI> ... Level one, number two...</LI>
</UL>
Les LI "Level one" sont des éléments de la liste UL.
Les LI "Level two" sont des éléments de première la liste OL.
Les LI "Level three" sont des éléments de la seconde liste OL.
Les LI ne contiennent rien ... et les 2 OL sont contenues dans l'UL ...
Vous faites vos fermetures autrement ? ...
Bon, alors si je soumets votre code au valideur officiel du W3C :
Bon ... d'abord ce n'est pas parcequ'on le lit partout que c'est vrai
:-) (c'est un lieu commun) et je préfère un lien issu d'un standard
pour confirmer.
Je dois dire que pour moi les LI ont tjrs été des éléments de liste et
que de plus ceux ci devaient être inclu dans un bloc de liste (ol, ul,
dir, menu ...) ... je n'aurais donc jamais eu l'idée de mettre une
liste dans un élément de liste (dans une LI racine) ...
(là je me rapproche d'un méa culpa :-) )
Admettons que je raconte des âneries depuis le début.
ou (pour conserver votre code tel quel, sans modifications dans la
feuille de style) en englobant les listes dans une SPAN par ex., le
code donne le résultat escompté et fonctionne correctement (cf code ci
dessous).
ben non ... je rajoute les fermetures :
<UL>
<LI> ... Level one, number one...</LI>
<OL>
<LI> ... Level two, number one...</LI>
<LI> ... Level two, number two...</LI>
<OL start="10">
<LI> ... Level three, number one...</LI>
</OL>
<LI> ... Level two, number three...</LI>
</OL>
<LI> ... Level one, number two...</LI>
</UL>
Les LI "Level one" sont des éléments de la liste UL.
Les LI "Level two" sont des éléments de première la liste OL.
Les LI "Level three" sont des éléments de la seconde liste OL.
Les LI ne contiennent rien ... et les 2 OL sont contenues dans l'UL ...
Vous faites vos fermetures autrement ? ...
Bon, alors si je soumets votre code au valideur officiel du W3C :
Bon ... d'abord ce n'est pas parcequ'on le lit partout que c'est vrai
:-) (c'est un lieu commun) et je préfère un lien issu d'un standard
pour confirmer.
Je dois dire que pour moi les LI ont tjrs été des éléments de liste et
que de plus ceux ci devaient être inclu dans un bloc de liste (ol, ul,
dir, menu ...) ... je n'aurais donc jamais eu l'idée de mettre une
liste dans un élément de liste (dans une LI racine) ...
(là je me rapproche d'un méa culpa :-) )
Admettons que je raconte des âneries depuis le début.
ou (pour conserver votre code tel quel, sans modifications dans la
feuille de style) en englobant les listes dans une SPAN par ex., le
code donne le résultat escompté et fonctionne correctement (cf code ci
dessous).