Bonjour,
J'ai codé une petite liste (un peu comme un select) car j'ai besoin de pouvoir agir vraiment sur la liste.
Bref, pour le moment, je n'arrive pas à avoir le comportement d'une liste, enfin j'en suis proche.
Seulement le comportement devient identique seulement quand je clique sur un élement.
La différence se fait au niveau de la scroolbar qui bouge seulement quand je clique une fois sur un élément (au niveau de la gestion des flèches).
**************************************
Voici le fichier HTML:
**************************************
Voici le ficheir js.
**************************************
Et voici la css
************************************
C'est comme si la scrollbar devient active à partir du moment ou je clique sur un élément.
Modifié par manutudescends (06 Oct 2006 - 12:32)
J'ai codé une petite liste (un peu comme un select) car j'ai besoin de pouvoir agir vraiment sur la liste.
Bref, pour le moment, je n'arrive pas à avoir le comportement d'une liste, enfin j'en suis proche.
Seulement le comportement devient identique seulement quand je clique sur un élement.
La différence se fait au niveau de la scroolbar qui bouge seulement quand je clique une fois sur un élément (au niveau de la gestion des flèches).
**************************************
Voici le fichier HTML:
<html>
<head>
<title> test</title>
<script language="JavaScript" src="Listes.js">
</script>
<link rel="stylesheet" type="text/css" href="Liste.css"/>
</head>
<body onKeyDown="javascript:keyPressed(event);">
<div id="listeElements" class="liste">
<div class="Selected" id="elementList0" onclick="listeId(this);">option1</div>
<div class="notSelected" id="elementList1" onclick="listeId(this);">option2</div>
<div class="notSelected" id="elementList2" onclick="listeId(this);">option3</div>
<div class="notSelected" id="elementList3" onclick="listeId(this);">option4</div>
<div class="notSelected" id="elementList4" onclick="listeId(this);">option5</div>
<div class="notSelected" id="elementList5" onclick="listeId(this);">option6</div>
<div class="notSelected" id="elementList6" onclick="listeId(this);">option7</div>
<div class="notSelected" id="elementList7" onclick="listeId(this);">option8</div>
<div class="notSelected" id="elementList8" onclick="listeId(this);">option9</div>
<div class="notSelected" id="elementList9" onclick="listeId(this);">option10</div>
<div class="notSelected" id="elementList10" onclick="listeId(this);">option11</div>
<div class="notSelected" id="elementList11" onclick="listeId(this);">option12</div>
</div>
</body>
</html>
**************************************
Voici le ficheir js.
var selected = "elementList0";
var navigateur = navigator.appName;
/**
* Permet de cacher la scrollbar principale
*/
function hideScroll(){
document.body.style.overflow='hidden';
}
/**
* Permet de sélectionner un élément de la liste
*/
function listeId(elem){
var currentClasse = getClassAttribute(elem);
var currentID = elem.getAttribute("id");
if (currentID != selected){
if (currentClasse=="notSelected") {
setClassAttribute(elem,"selected");
}
else {
setClassAttribute(elem,"notSelected");
}
// on désélectionne le suivant
if (selected !=-1) deselectLast(selected);
// l'élément sélectionné est l'élément courant.
selected = currentID;
}
}
/**
* Permet de désélectionner l'élément précédent
*/
function deselectLast(id){
var lastSelected = document.getElementById(id);
if (lastSelected){
setClassAttribute(lastSelected,"notSelected");
}
}
/**
* Fonction qui indique si le navigateur est Firefox
*/
function isFF(){
return navigateur == 'Netscape';
}
/**
* Fonction qui indique si le navigateur est Internet Explorer
*/
function isIE(){
return navigateur == 'Microsoft Internet Explorer';
}
/**
* Fonction qui permet de récupérer l'attribut class de l'élément en fonction du navigateur
*/
function getClassAttribute(element){
if (isFF()) {
return element.getAttribute("class");
}
else if ( isIE() ){
return element.getAttribute("className");
}
else {
return "";
}
}
/**
* Fonction qui permet de définir l'attribut class de l'élément en fonction du navigateur
*/
function setClassAttribute(element, value){
if (isFF()) {
return element.setAttribute("class",value);
}
else if ( isIE() ){
return element.setAttribute("className",value);
}
}
function keyPressed(pEvent){
if (pEvent.keyCode == 40) down(); // pression touche bas
else if (pEvent.keyCode == 38) up(); // pression touche haut
}
/**
* Déplace l'élément vers le bas
*/
function down(){
var selectedId = getSelectedId();
if (selectedId < getNbList()-1){
listeId(getElement(selectedId+1));
}
}
/**
* Déplace l'élément vers le haut
*/
function up(){
var selectedId = getSelectedId() ;
if (selectedId !=0){
listeId(getElement(selectedId-1));
}
}
/**
* Permet de récupérer le numéro de l'élément sélectionné.
*/
function getSelectedId(){
return parseInt(selected.split("elementList")[1]);
}
/**
* Permet de récupérer le nombre d'éléments de la liste
*/
function getNbList(){
if (isIE()){
return document.getElementById("listeElements").children.length;
} else {
var nb = 0;
var elements = document.getElementById("listeElements").childNodes;
for (i = 0; i< elements.length;i++){
if (elements.item(i).nodeType == Node.ELEMENT_NODE) {
nb++;
}
}
return nb;
}
}
/**
* Permet de récupérer l'élément définit à la position number de la liste
*/
function getElement(number){
if (isIE()){
return document.getElementById("listeElements").children(number);
} else {
var nb = 0;
var elements = document.getElementById("listeElements").childNodes;
for (i = 0; i< elements.length;i++){
if (elements.item(i).nodeType == Node.ELEMENT_NODE) {
if (nb==number) return elements.item(i);
nb++;
}
}
}
}
**************************************
Et voici la css
.liste{
/*overflow = hidden;*/
overflow: auto ;
font-size:20pt;
background:rgb(97,114,128);
height:200px;
display:block;
}
.notSelected{
background:rgb(97,114,128);
font-size:12pt;
height:30px;
margin-left:0px;
padding-left:10px;
padding-top:2px;
cursor:pointer;
display:block;
}
.selected{
background:rgb(0,104,10);
font-size:12pt;
height:30px;
margin-left:0px;
padding-left:10px;
padding-top:2px;
cursor:pointer;
display:block;
}
************************************
C'est comme si la scrollbar devient active à partir du moment ou je clique sur un élément.
Modifié par manutudescends (06 Oct 2006 - 12:32)