File "liste008.html"

Full Path: /home/analogde/www/insertion/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>