38 / 27 / 13
Регистрация: 18.12.2019
Сообщений: 423
Записей в блоге: 1

Проблема с элементом списка

20.05.2023, 17:14. Показов 599. Ответов 1

Студворк — интернет-сервис помощи студентам
Есть вот такое вот задание:

Написать клиентский сценарий, позволяющий динамически создавать
многоуровневый маркированный список. На Web-странице следует
предусмотреть интерфейс, позволяющий выполнить следующие действия:
 добавить новый элемент в конец списка;
 вставить новый элемент списка в заданную позицию;
 изменить текст элемента списка;
 добавить вложенный список;
 удалить элемент списка.

Работа с конструктором списка происходит по следующему принципу.
 При нажатии на кнопку «Добавить новый список» создаётся маркированный
список с одним элементом.
 Для изменения текста элемента списка следует выбрать соответствующий
переключатель, ввести новый текст, после чего «кликнуть» на элементе
списка.
 Для добавления нового элемента в конец списка следует выбрать
соответствующий переключатель, ввести текст, после чего «кликнуть» на
любом элементе списка, расположенном на этом же уровне.
 Для вставки нового элемента списка в конкретную позицию следует
выбрать соответствующий переключатель, ввести текст, после чего
«кликнуть» на том элементе списка, перед которым нужно вставить новый
элемент.
 Для добавления вложенного списка следует выбрать соответствующий
переключатель, ввести текст, после чего «кликнуть» на том элементе
списка, для которого вложенный список будет дочерним. Следует
предотвращать попытку создания вложенного списка для элемента, у
которого уже имеется дочерний список.
 Для удаления элемента списка следует выбрать соответствующий
переключатель, затем «кликнуть» на элементе списка, который нужно
удалить. Следует учесть, что при удалении элемента списка удаляются все
его дочерние элементы.
Все работает как и задумывалось, кроме "Insert New Item" (вставить новый элемент списка в заданную позицию).
Съедается маркировка элемента на который кликнул.
До клика по первому и второму пункту меню:

После кликов:


На видео, наверное лучше будет понятна проблема (около 10 секунд):
Запись 2023-05-20 165856.mp4

Помогите пожалуйста разобраться в чем проблема, где ошибка и как ее исправить. Заранее благодарен за помощь в решении проблемы.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.05.2023, 17:14
Ответы с готовыми решениями:

Лямба вызов (Получить разность между k - м элементом списка х и n - м элементом списка y)
Помогите пожалуйста Составить не рекурсивную программу в форме лямбда вызова. Получить разность между k-м элементом списка х и n-м...

Получить разность между k-м элементом списка х и n-м элементом списка y
1. Даны два числовых списка x и Y, k и n - целые числа (k, n = 1, 2, 3). Получить разность между k-м элементом списка х и n-м элементом...

Даны два списка. Каждый элемент первого списка ассоциативно связан соответствующим элементом второго списка
Помогите пожалуйста Даны два списка: список студентов и список их успеваемости. Каждый элемент первого списка ассоциативно связан с...

1
38 / 27 / 13
Регистрация: 18.12.2019
Сообщений: 423
Записей в блоге: 1
21.05.2023, 13:28  [ТС]
Лучший ответ Сообщение было отмечено Eva Rosalene как решение

Решение

Проблема решена. Возможно кому-то пригодится.

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<!DOCTYPE html>
<html>
 
<head>
    <style>
        ul {
            list-style-type: disc;
        }
 
        ul ul {
            list-style-type: circle;
        }
 
        ul ul ul {
            list-style-type: square;
        }
    </style>
</head>
 
<body>
    <!-- User interface for different actions -->
    <h1>Dynamic Multi-level Bulleted List</h1>
    <div>
        <!-- Input and label for adding a new element at the end of the list -->
        <input type="radio" name="action" value="add" id="add-radio">
        <label for="add-radio">Add New Element:</label>
        <input type="text" id="add-text" value="New Element">
        <br>
        <!-- Input and label for inserting a new item at a specific position -->
        <input type="radio" name="action" value="insert" id="insert-radio">
        <label for="insert-radio">Insert New Item:</label>
        <input type="text" id="insert-text" value="New Item">
        <br>
        <!-- Input and label for changing the text of a list item -->
        <input type="radio" name="action" value="change" id="change-radio">
        <label for="change-radio">Change Text:</label>
        <input type="text" id="change-text" value="New Text">
        <br>
        <!-- Input and label for adding a nested list -->
        <input type="radio" name="action" value="nested" id="nested-radio">
        <label for="nested-radio">Add Nested List:</label>
        <input type="text" id="nested-text" value="Nested List">
        <br>
        <!-- Input and label for removing an item -->
        <input type="radio" name="action" value="remove" id="remove-radio">
        <label for="remove-radio">Remove Item</label>
    </div>
    <br>
    <!-- Button to add a new list -->
    <button onclick="addNewList()">Add New List</button>
    <hr>
    <div id="list-container" onselectstart="return false;">
        <!-- Root bulleted list with one initial list item -->
        <ul id="root-list">
            <li>
                <!-- Clickable span representing the list item -->
                <span onclick="handleClick(event)">List Item 1</span>
            </li>
        </ul>
    </div>
 
    <script>
        // Function to add a new list when the "Add New List" button is clicked
        function addNewList() {
            const rootList = document.getElementById('root-list');
            const newItem = document.createElement('li');
            newItem.innerHTML = '<span onclick="handleClick(event)">New List Item</span>';
            rootList.appendChild(newItem);
        }
 
        // Function to handle the click event on list items
        function handleClick(event) {
            // Get the selected action from the radio buttons
            const action = document.querySelector('input[name="action"]:checked').value;
            // Get the corresponding text input based on the selected action
            const text = getTextFromInput(action);
 
            // Call the appropriate function based on the selected action
            switch (action) {
                case 'change':
                    changeText(event.target, text);
                    break;
                case 'add':
                    addNewElement(event.target, text);
                    break;
                case 'insert':
                    insertNewItem(event.target, text);
                    break;
                case 'nested':
                    addNestedList(event.target, text);
                    break;
                case 'remove':
                    removeItem(event.target);
                    break;
            }
        }
 
        // Function to get the text input based on the selected action
        function getTextFromInput(action) {
            switch (action) {
                case 'change':
                    return document.getElementById('change-text').value;
                case 'add':
                    return document.getElementById('add-text').value;
                case 'insert':
                    return document.getElementById('insert-text').value;
                case 'nested':
                    return document.getElementById('nested-text').value;
                default:
                    return '';
            }
        }
 
        // Function to change the text of a list item
        function changeText(target, text) {
            target.textContent = text;
        }
 
        // Function to add a new element at the end of the list
        function addNewElement(target, text) {
            const rootList = document.getElementById('root-list');
            const newItem = document.createElement('li');
            newItem.innerHTML = '<span onclick="handleClick(event)">' + text + '</span>';
            rootList.appendChild(newItem);
        }
 
        // Function to insert a new item at a specific position in the list
        function insertNewItem(target, text) {
            const newItem = document.createElement('li');
            newItem.innerHTML = '<span onclick="handleClick(event)">' + text + '</span>';
            target.parentNode.parentNode.insertBefore(newItem, target.parentNode);
        }
 
        // Function to add a nested list for a list item
        function addNestedList(target, text) {
            // Check if the parent already has a nested list
            if (target.parentNode.querySelector('ul')) {
                alert('Cannot create nested list for an element that already has a child list.');
                return;
            }
 
            const nestedList = document.createElement('ul');
            const newItem = document.createElement('li');
            newItem.innerHTML = '<span onclick="handleClick(event)">' + text + '</span>';
            nestedList.appendChild(newItem);
            target.parentNode.appendChild(nestedList);
        }
 
        // Function to remove a list item
        function removeItem(target) {
            const parentList = target.parentNode.parentNode;
            parentList.removeChild(target.parentNode);
        }
    </script>
</body>
 
</html>
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.05.2023, 13:28
Помогаю со студенческими работами здесь

Найти число элементов списка между минимальным элементом и максимальным элементом
Дан список L, элементы которого являются целыми числами. Найти число элементов между минимальным элементом и максимальным элементом.

Найти число элементов между минимальным элементом и максимальным элементом списка
Дан список L, элементы которого являются целыми числами. Найти число элементов между минимальным элементом и максимальным элементом. В...

Как связать звено элемента динамического списка с выбранным элементом из списка?
как связать звено элемента динамического списка с выбранным элементом из списка в коде? procedure TForm1.Edit2Change(Sender:...

Определите совпадает ли первый элемент списка Х, с последним элементом списка У
Определите совпадает ли первый элемент списка Х, с последним элементом списка У - помогите реализовать

Сравнить каждого элемента списка с каждым элементом другого списка
Здравствуйте! Задача состоит в следующем: Даны два списка, они могут быть не равны по количеству элементов. Необходимо сравнить каждый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru