Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.11.2021, 11:02
Аспирант
Отправить личное сообщение для TomWalbridge Посмотреть профиль Найти все сообщения от TomWalbridge
 
Регистрация: 24.10.2021
Сообщений: 31

Помогите решить задачу!
Привет! Ребят, может у кого есть начальные наброски таблицы такого характера, меня интересует только набросок добавления из массива всех элементов в таблицу
Создайте панель управления студентами, на которой будут располагаться

таблица со студентами с фильтрами и сортировкой
форма добавления нового студента
Студенты должны храниться в массиве. Каждый студент - объект, содержащий следующие данные:

имя
фамилия
отчество
дата рождения (объект Date)
год начала обучения
факультет (строка)
Ответить с цитированием
  #2 (permalink)  
Старый 18.11.2021, 11:30
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Библиотека для реализация на фронте
Ответить с цитированием
  #3 (permalink)  
Старый 18.11.2021, 11:34
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

TomWalbridge,
ищите по форуму ...
https://javascript.ru/forum/dom-wind...tml#post500746

https://javascript.ru/forum/misc/777...tml#post509074
Ответить с цитированием
  #4 (permalink)  
Старый 18.11.2021, 12:01
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

<style>
@import url('https://fonts.googleapis.com/css?family=Roboto:400,400i,500,500i,700');
body {
  font-family: Roboto;
}

table {
  border-collapse: collapse
}

td,
th {
  border: 2px solid red;
  width: 150px;
  height: 40px;
  text-align: center;
}

th {
  cursor: pointer;
  user-select: none;
}

th.sorted[data-order="-1"]::after {
  content: "▼"
}

th.sorted[data-order="1"]::after {
  content: "▲"
}
</style>
<table>
  <thead onclick="getSort(event)">
    <tr>
      <th>Name</th>
      <th>SecondName</th>
      <th>Patronymic</th>
      <th>Age</th>
    </tr>
  </thead>
  <tbody contenteditable>
    <tr>
      <td>Макс</td>
      <td>Троцкий</td>
      <td>Ильич</td>
      <td>77</td>
    </tr>
    <tr>
      <td>Вася</td>
      <td>Петров</td>
      <td>Александрович</td>
      <td>21</td>
    </tr>
    <tr>
      <td>Петя</td>
      <td>Иванов</td>
      <td>Петрович</td>
      <td>15</td>
    </tr>
    <tr>
      <td>Миша</td>
      <td>Ложкин</td>
      <td>Васильевич</td>
      <td>43</td>
    </tr>
    <tr>
      <td>Владимир</td>
      <td>Сидоров</td>
      <td>Игоревич</td>
      <td>33</td>
    </tr>
    <tr>
      <td>Коля</td>
      <td>Колбаскин</td>
      <td>Олегович</td>
      <td>41</td>
    </tr>
  </tbody>
</table>
<script>
const getSort = ({target}) => {
  const order = target.dataset.order = -target.dataset.order || 1;
  const index = [...target.parentNode.cells].indexOf(target);
  const collator = new Intl.Collator(["en", "ru"], {numeric: true});
  const comparator = (index, order) => (a, b) => order * collator.compare(a.children[index].innerHTML, b.children[index].innerHTML);
  for (const tBody of target.closest("table").tBodies) tBody.append(...[...tBody.rows].sort(comparator(index, order)));
  for (const cell of target.parentNode.cells) cell.classList.toggle("sorted", cell === target);
};
</script>

еще пример
Ответить с цитированием
  #5 (permalink)  
Старый 20.11.2021, 21:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

TomWalbridge,
searchTable - фильтровали, фильтровали, а вернули нефильтрованное)))
Ответить с цитированием
  #6 (permalink)  
Старый 20.11.2021, 21:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

TomWalbridge,
строка 10 - 14 - вы определитесь уже, методы jQuery редко совпадают с методами js.
Ответить с цитированием
  #7 (permalink)  
Старый 20.11.2021, 22:10
Аспирант
Отправить личное сообщение для TomWalbridge Посмотреть профиль Найти все сообщения от TomWalbridge
 
Регистрация: 24.10.2021
Сообщений: 31

Всем спасибо за ответы!
Я тут набросал код, но почему то не работает(
<body>
    <div class="container">
        <div class="filter__container">
            <h2>Показать студентов</h2>
            <ul class="filter__list">
                <li class="filter__list-item">
                    <label for="">по ФИО</label>
                    <input class="filter" type="text" id="fio">
                </li>
                <li class="filter__list-item">
                    <label for="fac">по факультету</label>
                    <input class="filter" type="text" id="fac">
                </li>
                <li class="filter__list-item">
                    <label for="date-start">по году начала обучения </label>
                    <input class="filter" type="text" id="date-start">
                </li>
                <li class="filter__list-item">
                    <label for="date-end">по году окончания обучения</label>
                    <input class="filter" type="text" id="date-end">
                </li>

            </ul>
        </div>
        <form class="form">
            <h2> Добавить студента</h2>
            <ul class="list">
                <li><label for="student__name">Имя</label>
                    <input class="student" id="student__name" type="text"></li>
                <li><label for="student__sname">Фамилия</label>
                    <input class="student" id="student__sname" type="text"></li>
                <li><label for="student__lname">Отчетство</label>
                    <input class="student" id="student__lname" type="text"></li>
                <li><label for="student__bdate">Дата рождения</label>
                    <input class="student" id="student__bdate" type="date"></li>
                <li><label for="student__startLearn">Год начала обучения</label>
                    <input class="student" id="student__startLearn" type="text"></li>
                <li><label for="student__faculty">Факультет</label>
                    <input class="student" id="student__faculty" type="text"></li>
                <button class="btn-add">Добавить судента</button>
            </ul>
        </form>
        <table>
            <thead>
                <tr>
                    <th>ФИО</th>
                    <th>Факультет</th>
                    <th>Дата рождения</th>
                    <th>Год обучения</th>
                </tr>
            </thead>
            <tbody id="mytable"></tbody>
        </table>
    </div>
    <script src="js/main.js"></script>
</body>
Ответить с цитированием
  #8 (permalink)  
Старый 20.11.2021, 22:11
Аспирант
Отправить личное сообщение для TomWalbridge Посмотреть профиль Найти все сообщения от TomWalbridge
 
Регистрация: 24.10.2021
Сообщений: 31

const array = [
    { sname: 'Сидоров', fname: 'Иван', lname: 'Михайлович', bdate: '23.12.1990', startlearn: '12.12.2005', fac: 'Физики' },
    { sname: 'Сидорова', fname: 'Ивана', lname: 'Михайловна', bdate: '12.11.1994', startlearn: '24.01.2006', fac: 'Астрономии' },
    { sname: 'Сорокина', fname: 'Мария', lname: 'Алексеевна', bdate: '01.01.1992', startlearn: '11.12.2008', fac: 'Математики' },
    { sname: 'Андропов', fname: 'Александр', lname: 'Петрович', bdate: '3.10.1992', startlearn: '13.12.2003', fac: 'Информатики' },
    { sname: 'Никифоров', fname: 'Олег', lname: 'Олегович', bdate: '24.12.1995', startlearn: '12.12.2004', fac: 'Химии' }
]
buildTable(array)
let inputFio = document.querySelector('#fio')

inputFio.addEventListener('keyup', searchTable)



function searchTable(value, data) {
    let filteredData = []

    for (let i = 0; i < data.length; i++) {
        value = value.toLowerCase()
        let sname = data[i].sname.toLowerCase()

        if (sname.include(value)) {
            filteredData.push(data[i])
        }
    }

    return data
}

function buildTable(data) {
    let table = document.getElementById('mytable')
    table.innerHTML = ''
    for (let i = 0; i < data.length; i++) {
        let row = `
        <tr>
        <td>${data[i].sname + data[i].fname + data[i].lname}</td>
        <td>${data[i].bdate}</td>
        <td>${data[i].startlearn}</td>
        <td>${data[i].fac}</td>
        <tr/>
        `
        table.innerHTML += row
    }
}
Ответить с цитированием
  #9 (permalink)  
Старый 20.11.2021, 22:11
Аспирант
Отправить личное сообщение для TomWalbridge Посмотреть профиль Найти все сообщения от TomWalbridge
 
Регистрация: 24.10.2021
Сообщений: 31

const array = [
    { sname: 'Сидоров', fname: 'Иван', lname: 'Михайлович', bdate: '23.12.1990', startlearn: '12.12.2005', fac: 'Физики' },
    { sname: 'Сидорова', fname: 'Ивана', lname: 'Михайловна', bdate: '12.11.1994', startlearn: '24.01.2006', fac: 'Астрономии' },
    { sname: 'Сорокина', fname: 'Мария', lname: 'Алексеевна', bdate: '01.01.1992', startlearn: '11.12.2008', fac: 'Математики' },
    { sname: 'Андропов', fname: 'Александр', lname: 'Петрович', bdate: '3.10.1992', startlearn: '13.12.2003', fac: 'Информатики' },
    { sname: 'Никифоров', fname: 'Олег', lname: 'Олегович', bdate: '24.12.1995', startlearn: '12.12.2004', fac: 'Химии' }
]
buildTable(array)
let inputFio = document.querySelector('#fio')

inputFio.addEventListener('keyup', searchTable)



function searchTable(value, data) {
    let filteredData = []

    for (let i = 0; i < data.length; i++) {
        value = value.toLowerCase()
        let sname = data[i].sname.toLowerCase()

        if (sname.include(value)) {
            filteredData.push(data[i])
        }
    }

    return data
}

function buildTable(data) {
    let table = document.getElementById('mytable')
    table.innerHTML = ''
    for (let i = 0; i < data.length; i++) {
        let row = `
        <tr>
        <td>${data[i].sname + data[i].fname + data[i].lname}</td>
        <td>${data[i].bdate}</td>
        <td>${data[i].startlearn}</td>
        <td>${data[i].fac}</td>
        <tr/>
        `
        table.innerHTML += row
    }
}
Ответить с цитированием
  #10 (permalink)  
Старый 20.11.2021, 22:12
Аспирант
Отправить личное сообщение для TomWalbridge Посмотреть профиль Найти все сообщения от TomWalbridge
 
Регистрация: 24.10.2021
Сообщений: 31

Я переделал без JQ
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить небольшую задачу kseosru Общие вопросы Javascript 1 24.11.2019 17:08
Помогите решить задачу fillika Events/DOM/Window 2 16.05.2019 11:39
Помогите решить задачу. Alex14 Javascript под браузер 2 29.03.2017 12:18
Пожалуйста помогите решить задачу на java alex01rus1991 Элементы интерфейса 9 27.11.2012 01:02
Помогите решить задачу vkg Общие вопросы Javascript 1 20.02.2008 11:59