Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 05.02.2023
Сообщений: 29

Добавление строк в таблицу

06.02.2023, 16:37. Показов 682. Ответов 4

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





помогите написать код пожалуйста, нужно что бы при нажитии на кнопку New visitor , открывался див newWindow. написав Name и number и нажав на кнопку save добавлялась строчка к таблице (newWindow у меня уже есть, осталось только что бы строчка добавлялась к таблице снизу) ПОЖАЛУЙСТА СРОЧНО НУЖНО
Java
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
const idElem = ['body', 'newWindow', 'quit', 'name', 'number', 'save'];
const [body, newWindow, quit, firstName, phone, save] = idElem.map(id => document.getElementById(id));
 
const data = [
    ['Colette Kelley', '012 435 45 67'],
    ['Ruby-Rose Lennon', '012 647 34 24'],
    ['Leanne Gibbons', '012 879 78 45'],
    ['Rumaisa Peel', '012 456 64 67'],
    ['Gene Medrano', '012 245 47 89'],
    ['Sheridan Tucker', '012 345 85 90'],
    ['CHristina Mack', '012 123 36 46'],
    ['Everly Moses', '012 678 99 74'],
    ['Kara Feeney', '012 456 96 53'],
    ['Cameron Rennie', '012 967 47 85'],
]; 
 
const createTableContent = arr => {
    return arr.reduce((s, [n, p], i) => {
        return s += `<tr>
            <td>${++i}</td>
            <td>${n}</td>
            <td>${p}</td>
            <td><button class="penButton">✏️</button></td>          
        </tr>`;
    }, '');
};
 
body.innerHTML = createTableContent(data);
 
const divEdit = e => {
    if(!e.target.classList.contains('penButton')) return;
    let tr = e.target.closest('tr');
    firstName.value = tr.cells[1].innerText;
    phone.value = tr.cells[2].innerText;
    save.dataset.row = tr.rowIndex - 1;
    newWindow.style.display = 'block';
}
 
const saveValue = e => {
    let tr = body.rows[e.target.dataset.row];
    tr.cells[1].innerText = firstName.value;
    tr.cells[2].innerText = phone.value;
    newWindow.style.display = 'none';
};
 
const quitEdit = () => newWindow.style.display = 'none';
 
quit.addEventListener('click', quitEdit);
body.addEventListener('click', divEdit);
save.addEventListener('click', saveValue);
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.02.2023, 16:37
Ответы с готовыми решениями:

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

Добавление строк в таблицу
Доброго времени суток! Я новичок в этом деле, так что сильно не пинайте. Я вывожу данные из json файла в таблицу, заполняю ее естественно...

Добавление строк в таблицу
Подскажите, пожалуйста, как ограничить количество добавленных строк в таблице, можно добавить максимум 3 строчки. Строчки добавляются...

4
 Аватар для klyapa
3503 / 1267 / 429
Регистрация: 24.07.2016
Сообщений: 1,890
06.02.2023, 21:06
Хахх... ) Я так и знал, что это только начало )

Теперь, я так полагаю, кроме добавления строки в конец таблицы, вам нужна ещё сортировка (по непонятным критериям) и поиск (тоже не всё понятно) ... Это нужно снова html поднимать, кнопки/поля добавлять, скрипт переписывать. Какое дальше продолжение будет? Что вы ещё недосказали?
0
1 / 1 / 0
Регистрация: 05.02.2023
Сообщений: 29
06.02.2023, 21:36  [ТС]
осталось только добавление сортировка и поиск больше ничего не нужно, время мало осталось пытаюсь сам либо не выходит либо получаеться но криво, сортировка по ID Name number, и поиск типо пишу имя или номер те строки которые не подходят удаляються, которые подходят остаюсься
HTML5
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
<body>
 
    <header>
        <div id="firstHead">
            <h1>LIBRARY</h1>
        </div>
        <div id="secondHead">
            <div id="sh1">
                <h2>Books</h2>
            </div>
            <div id="sh2">
                <h2>Visitors</h2>
            </div>
            <div id="sh3">
                <h2>Cards</h2>
            </div>
            <div id="sh4">
                <h2>Statistics</h2>
            </div>
        </div>
    </header>
 
    <main>
        <div id="topMain">
            <h2>ALL VISITORS</h2>
            <button id="newVis" >New visitor</button>
        </div>
        <div id="centerMain">
            <div id="left">
                <p>Sort by:</p>
                <input name="input" list="li" />
                <datalist id="li">
                    <option value="ID"></option>
                    <option value="Name"></option>
                    <option value="Phone"></option>
                </datalist>
                <button>Sort</button>
            </div>
            <div id="right">
                <p>Search:</p>
                <input type="search" name="search" id="search">
                <button>Search</button>
            </div>
        </div>
        <div id="footMain">
            <table id="table" class="iksweb">
                <thead>
                    <tr>
                        <th>ID</th>
                        <th>Name</th>
                        <th>Phone</th>
                        <th>Edit</th>
                    </tr>
                </thead>
                <tbody id="body"></tbody>
            </table>
        </div>
    </main>
 
 
 
    <div id="newWindow">
        <div id="ones">
            <button id="quit">X</button>
        </div>
        <div id="plop">
            <div id="two">
                <h3>Edit visitor:</h3>
            </div>
            <div id="three">
                <h4>Full name:</h4>
                <input type="text" name="name" id="name">
            </div>
            <div id="four">
                <h4>Phone number:</h4>
                <input type="text" name="number" id="number">
            </div>
            <div id="five">
                <button id="save">Save</button>
            </div>
        </div>
    </div>
 
 
    <script src="/script.js"></script>
</body>
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
const idElem = ['body', 'newWindow', 'quit', 'name', 'number', 'save'];
const [body, newWindow, quit, firstName, phone, save] = idElem.map(id => document.getElementById(id));
 
const data = [
    ['Colette Kelley', '012 435 45 67'],
    ['Ruby-Rose Lennon', '012 647 34 24'],
    ['Leanne Gibbons', '012 879 78 45'],
    ['Rumaisa Peel', '012 456 64 67'],
    ['Gene Medrano', '012 245 47 89'],
    ['Sheridan Tucker', '012 345 85 90'],
    ['Christina Mack', '012 123 36 46'],
    ['Everly Moses', '012 678 99 74'],
    ['Kara Feeney', '012 456 96 53'],
    ['Cameron Rennie', '012 967 47 85'],
]; 
 
const createTableContent = arr => {
    return arr.reduce((s, [n, p], i) => {
        return s += `<tr>
            <td>${++i}</td>
            <td>${n}</td>
            <td>${p}</td>
            <td><button class="penButton">✏️</button></td>          
        </tr>`;
    }, '');
};
 
body.innerHTML = createTableContent(data);
 
const divEdit = e => {
    if(!e.target.classList.contains('penButton')) return;
    let tr = e.target.closest('tr');
    firstName.value = tr.cells[1].innerText;
    phone.value = tr.cells[2].innerText;
    save.dataset.row = tr.rowIndex - 1;
    newWindow.style.display = 'block';
}
 
const saveValue = e => {
    let tr = body.rows[e.target.dataset.row];
    tr.cells[1].innerText = firstName.value;
    tr.cells[2].innerText = phone.value;
    newWindow.style.display = 'none';
};
 
const quitEdit = () => newWindow.style.display = 'none';
 
 
 
quit.addEventListener('click', quitEdit);
body.addEventListener('click', divEdit);
save.addEventListener('click', saveValue);
0
 Аватар для klyapa
3503 / 1267 / 429
Регистрация: 24.07.2016
Сообщений: 1,890
07.02.2023, 19:32
Лучший ответ Сообщение было отмечено Mardesss как решение

Решение

CSS
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
        table#table {
            width: 80%;
            background-color: #D8D7D7;
            margin: auto;
            border-collapse: collapse;
        }
        caption {
            background-color: #D8D7D7;
            padding: 10px;
            text-align: left;
        }
        h2 {
            position: relative;
            color: #3F9D9B;
        }
        button#vis {
            position: absolute;
            width: 20%;
            right: 20px;
        }
        td { padding: 5px; }
        .win {
            position: absolute;
            width: 30%;
            border: 2px solid #b9afaf;
            padding: 8px;
            border-radius: 5px;
            background-color: rgb(133 188 163 / 50%);
            transition: 1s;
            top: -100%;
            left: -100%;
        }
        .boxbtn { text-align: right; }
        .btns {
            width: 100%;
            margin-top: 20px;
        }
        h5 { margin-bottom: 0; }
        .inputs {
            width: 100%;
            box-sizing: border-box;
        }
        .winclose {
            top: -100%;
            left: -100%;
        }
        .winshow {
            top: 40%;
            left: 30%;
        }
HTML5
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
<table id="table" border="1">
    <caption>
        <h2>ALL VISITORS<button id="vis">New Visitor</button></h2>
        <hr />
        <span>Sort by: </span>
        <input id="sort" list="srt" />
        <datalist id="srt">
            <option value="ID"></option>
            <option value="Name"></option>
            <option value="Phone"></option>
        </datalist>
        <span>Search: </span>
        <input id="srch" type="text" />
    </caption>
    <thead>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Phone</th>
            <th>Edit</th>
        </tr>
    </thead>
    <tbody id="tbody"></tbody>
</table>
 
<div id="winsav" class="win">
    <div class="boxbtn">
        <button class="close">X</button>
    </div>
    <h3>Edit change:</h3>
    <h5>Full name:</h5>
    <input type="text" id="namsav" class="inputs" />
    <h5>Phone number:</h5>
    <input type="text" id="phonesav" class="inputs" />
    <button id="save" class="btns">Save</button>
</div>
 
<div id="winins" class="win">
    <div class="boxbtn">
        <button class="close">X</button>
    </div>
    <h3>Edit visitor:</h3>
    <h5>Full name:</h5>
    <input type="text" id="namins" class="inputs" />
    <h5>Phone number:</h5>
    <input type="text" id="phoneins" class="inputs" />
    <button id="ins" class="btns">Insert</button>
</div>
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
const [
    vis, tbody, winsav, winins, namsav, phonesav,
    namins, srch, phoneins, save, ins, sort
] = [
    'vis', 'tbody', 'winsav', 'winins', 'namsav', 'phonesav',
    'namins', 'srch', 'phoneins', 'save', 'ins', 'sort'
].map(id => document.getElementById(id));
 
const data = [
    ['Colette Kelley', '012 435 45 67'],
    ['Ruby-Rose Lennon', '012 647 34 24'],
    ['Leanne Gibbons', '012 879 78 45'],
    ['Rumaisa Peel', '012 456 64 67'],
    ['Gene Medrano', '012 245 47 89'],
    ['Sheridan Tucker', '012 345 85 90'],
    ['Christina Mack', '012 123 36 46'],
    ['Everly Moses', '012 678 99 74'],
    ['Kara Feeney', '012 456 96 53'],
    ['Cameron Rennie', '012 967 47 85'],
]; 
 
const createTableContent = arr => {
    return arr.reduce((s, [n, p], i) => {
        return s += `<tr>
            <td>${++i}</td>
            <td>${n}</td>
            <td>${p}</td>
            <td>
                <button class="penButton">✏️</button>
                <button class="del">delete</button>
            </td>          
        </tr>`;
    }, '');
};
 
const closewin = e => {
    e.target.closest('div.win').classList.remove('winshow');
    [namsav, phonesav, namins, phoneins].forEach(inp => inp.value = '');
};
 
const showSave = e => {
    if(!e.target.classList.contains('penButton')) return;
    let tr = e.target.closest('tr');
    namsav.value = tr.cells[1].innerText;
    phonesav.value = tr.cells[2].innerText;
    save.dataset.row = tr.rowIndex - 1;
    winins.classList.remove('winshow');
    winsav.classList.add('winshow');
}
 
const showVisitor = e => {
    winins.classList.add('winshow');
    winsav.classList.remove('winshow');
}
 
const saveValue = e => {
    let tr = tbody.rows[e.target.dataset.row];
    tr.cells[1].innerText = namsav.value;
    tr.cells[2].innerText = phonesav.value;
};
 
const saveRow = e => {
    data.push([namins.value, phoneins.value]);
    tbody.innerHTML = createTableContent(data);
    document.querySelector('#winins button.close').dispatchEvent(new Event('click'));
};
 
const delRow = e => {
    if(!e.target.classList.contains('del')) return;
    if(confirm('Удалить строку?')) {
        let str = tbody.rows[e.target.closest('tr').rowIndex - 1].cells[1].innerText;
        data.splice(data.findIndex(([s, t]) => s === str), 1);
        tbody.innerHTML = createTableContent(data);
    }
};
 
const sorting = e => {
    let val = e.target.value;
    if(val === 'ID') {
        tbody.append(...[...tbody.rows].sort(
            (a, b) => Number(a.cells[0].innerText) - Number(b.cells[0].innerText)
        ));
    }
    if(val === 'Name') {
        tbody.append(...[...tbody.rows].sort(
            (a, b) => a.cells[1].innerText.localeCompare(b.cells[1].innerText, 'en-US')
        ));
    }
    if(val === 'Phone') {
        tbody.append(...[...tbody.rows].sort(
            (a, b) => Number(
                a.cells[2].innerText.replaceAll(' ', '')
            ) - Number(
                b.cells[2].innerText.replaceAll(' ', '')
            )
        ));
    }
};
 
const srchRun = e => {
    tbody.innerHTML = createTableContent(data);
    sort.value = '';
    let val = e.target.value.trim();
    if(!val) return;
    let fltr = data.filter(([s, _]) => new RegExp(`^${val}`, 'gi').test(s));
    if(fltr.length) tbody.innerHTML = createTableContent(fltr);
};
 
tbody.innerHTML = createTableContent(data);
 
[
    [tbody, 'click', showSave],
    [tbody, 'click', delRow],
    [vis, 'click', showVisitor],
    [save, 'click', saveValue],
    [ins, 'click', saveRow],
    [sort, 'change', sorting],
    [srch, 'input', srchRun],
].forEach(([elem, evt, func]) => elem.addEventListener(evt, func));
 
document.querySelectorAll('button.close').forEach(btn => btn.addEventListener('click', closewin));
=> https://codepen.io/klyapa/pen/mdjggjq

= > full
4
1 / 1 / 0
Регистрация: 05.02.2023
Сообщений: 29
07.02.2023, 23:20  [ТС]
Все замечательно !!! ВЫ ЛУЧШИЙ, спасибо вам огромное за помощь, мне бы такие знания, надеюсь научусь

Добавлено через 6 минут
что то я у вас все скопировал а редактироваться не хочет

Добавлено через 4 минуты
ВСЕЕЕЕ УРА все сделал, точнее вы сделали, СПАСИБО еще раз

Добавлено через 34 минуты
как мне вас отблагодарить ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.02.2023, 23:20
Помогаю со студенческими работами здесь

Добавление строк в таблицу
Добрый вечер. подскажите пожалуйста, как правильно добавить строку в таблицу, с тем условием, чтобы имелась возможность изменять name...

Добавление строк в таблицу (JQuery)
Доброго времени суток. Прошу помощи у профессионалов. Вот код: &lt;!DOCTYPE HTML&gt; &lt;html lang=&quot;ru-RU&quot;&gt; &lt;head&gt; ...

Добавление строк в таблицу с различными данными
Доброго времени суток, форумчане! Как сделать таблицу из 5 колонок, в первой ячейке первой строки должны быть картинка (пока просто...

jQuery динамическое добавление строк в таблицу
Форумчане, need help) возникла проблема. нужно по клику на кнопку добавить строку в таблицу. Именно под ту строку, на которой была...

Добавление строк в таблицу кнопкой и отслеживание id данной строки
Делаю вывод новой строки в таблицу по нажатию на кнопку. Всё появляется, но не работает клик по картинке у строки, которая появилась,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru