File "liste008.html"
Full Path: /home/analogde/www/Dev tableau/liste008.html
File size: 5.8 KB
MIME-type: text/html
Charset: utf-8
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Listes Dynamiques</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
}
.list-container {
width: 300px;
height: calc(5 * 20px); /* 5 lignes de 20px chacune */
overflow-y: auto;
border: 1px solid #ccc;
padding: 10px;
border-radius: 4px;
}
.item-list {
list-style-type: none;
padding: 0;
margin: 0;
}
.item-list li {
padding: 8px;
margin-bottom: 5px;
background-color: #f0f0f0;
border-radius: 4px;
cursor: pointer;
}
.item-list li:hover {
background-color: #d0d0d0;
}
.item-list li.selected {
background-color: #a0a0a0;
}
.lists-container {
display: flex;
align-items: flex-start;
gap: 20px; /* Espacement entre les listes et le bouton */
margin-top: 20px;
}
.button-container {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
height: 100%;
gap: 10px; /* Espacement entre les boutons */
}
</style>
</head>
<body>
<h1>Ajouter des éléments à la liste 1</h1>
<input type="text" id="item-input" placeholder="Entrez un élément">
<button onclick="addItem()">Ajouter</button>
<div class="lists-container">
<div id="list-container-1" class="list-container">
<ul id="item-list-1" class="item-list"></ul>
</div>
<div class="button-container">
<button onclick="moveItems()">→</button>
<button onclick="returnItems()">←</button>
</div>
<div id="list-container-2" class="list-container">
<ul id="item-list-2" class="item-list"></ul>
</div>
</div>
<script>
let selectedItemsLeft = [];
let selectedItemsRight = [];
function addItem() {
// Récupérer la valeur de l'input
var input = document.getElementById('item-input');
var itemText = input.value.trim();
// Vérifier si l'input n'est pas vide
if (itemText !== '') {
// Vérifier si l'élément existe déjà dans la première liste (insensible à la casse)
var exists = Array.from(document.getElementById('item-list-1').children).some(function(listItem) {
return listItem.textContent.toLowerCase() === itemText.toLowerCase();
});
if (!exists) {
// Créer un nouvel élément de liste pour la première liste
var listItem1 = document.createElement('li');
listItem1.textContent = itemText;
listItem1.addEventListener('click', function() {
toggleSelectItem(listItem1, selectedItemsLeft);
});
// Ajouter l'élément à la première liste
document.getElementById('item-list-1').appendChild(listItem1);
// Vider l'input
input.value = '';
} else {
alert('Cet élément existe déjà dans la liste de gauche.');
}
}
}
function toggleSelectItem(item, selectedList) {
if (selectedList.includes(item)) {
selectedList.splice(selectedList.indexOf(item), 1);
item.classList.remove('selected');
} else {
selectedList.push(item);
item.classList.add('selected');
}
}
function moveItems() {
if (selectedItemsLeft.length > 0) {
var targetList = document.getElementById('item-list-2');
selectedItemsLeft.forEach(function(item) {
// Vérifier si l'élément est déjà dans la liste de droite
var exists = Array.from(targetList.children).some(function(listItem) {
return listItem.textContent.toLowerCase() === item.textContent.toLowerCase();
});
if (!exists) {
// Créer un nouvel élément de liste pour la seconde liste
var listItem2 = document.createElement('li');
listItem2.textContent = item.textContent;
listItem2.addEventListener('click', function() {
toggleSelectItem(listItem2, selectedItemsRight);
});
// Ajouter l'élément à la seconde liste
targetList.appendChild(listItem2);
}
});
// Réinitialiser la liste des éléments sélectionnés
selectedItemsLeft.forEach(function(item) {
item.classList.remove('selected');
});
selectedItemsLeft = [];
}
}
function returnItems() {
if (selectedItemsRight.length > 0) {
selectedItemsRight.forEach(function(item) {
// Supprimer l'élément de la seconde liste
item.remove();
});
// Réinitialiser la liste des éléments sélectionnés
selectedItemsRight = [];
}
}
</script>
</body>
</html>