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

Задание свойства ячейкам таблицы "contenteditable"

05.07.2018, 11:35. Показов 1625. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача была поставлена таким образом, считать с 2-х полей количество ячеек для таблицы, сгенерировать по таким значениям таблицу [x,y]. Получилось так:

Кликните здесь для просмотра всего текста

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
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JS Table Generator</title>
    <link rel="stylesheet" href="style.css">
    <script>
        function buttonClick() {
            var t1 = document.getElementById("t1");
            var t2 = document.getElementById("t2");
            var table = document.getElementById("table");
            var rows = [];
            var cells = [];
            for (var i = 0; i < t1.value; i++) {
                rows[i] = table.insertRow(i);
                for (var j = 0; j < t2.value; j++) {
                    cells[i] = [];
                    cells[i][j] = rows[i].insertCell(j);
                }
            }
            for (var i=0;i<cells.length;i++) {
                for (var j=0;j<cells[i].length; j++) {
                    cells[i,j].contentEditable = true;
                }
            }
        }
    </script>
</head>
<body>
<input type="text" id="t1">
<br>
<input type="text" id="t2">
<table border="1px" id="table">
</table>
<button onclick="buttonClick()"></button>
</body>
</html>


Теперь мне нужно задать возможность вписывать значения в данную таблицу, а на основе этого я буду дальше реализовывать функционал.
За код не ругайте, с JS знаком лишь пару дней. Я попробовал реализовать через contentEditible, но пока что не работает. Буду благодарен за помощь.

Добавлено через 13 минут
Разобрался сам - нужно было применить contentEditible к всей таблице.

Кликните здесь для просмотра всего текста

JavaScript
1
table.contentEditable = true;


Наверное тему, можно закрывать, но у кого-то будет желание покритиковать стилистику, или вообще манеру написания кода (хотя тут и кода нет), буду очень благодарен. Такие пинки очень важны с самого начала изучения.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.07.2018, 11:35
Ответы с готовыми решениями:

Как применить определенные свойства (в том числе объединение) ко всем выделенным ячейкам?
Всем привет! Пытаюсь научиться банальным операциям в VBA. Спорным, которые так просто в гугле не найти. Хотя бы потому что не знаю какой...

Обращение к ячейкам таблицы
Здравствуйте. С помощью такой записи я могу получить только из первой записи любые данные. ...

Разложение по ячейкам таблицы!
Я создала библиотеку, которая должна создавать форму с таблицей. Таблица должна заполняться из SQL, соединение осуществляется через...

4
Эксперт JS
2037 / 1096 / 409
Регистрация: 29.04.2016
Сообщений: 2,625
05.07.2018, 13:02
Цитата Сообщение от MadMetal Посмотреть сообщение
с JS знаком лишь пару дней
Пару дней...? И уже пишите функции, циклы, массивы... Что-то за пару дней вы многому смогли научиться Наверное кодите/кодили на каком-то другом языке? Может я конечно "капитан очевидность" но все же?
0
249 / 162 / 68
Регистрация: 10.12.2017
Сообщений: 558
05.07.2018, 13:37
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
<style>
  td {
    min-width: 20px;
    height: 20px;
  }
</style>
<input type="text" id="cols" value="5">
  <br>
  <input type="text" id="rows" value="5">
  <table border="1px" id="table" contenteditable="true">
  </table>
  <button onclick="buttonClick()">generate</button>
  <script>
    function buttonClick() {
      var table = document.getElementById('table')
      table.innerHTML = '';
      // не работает в IE без polyfill'а
      Array(parseInt(document.getElementById('rows').value)).fill().forEach((row, rowIndex) => {
        row = table.insertRow(rowIndex);
        [...Array(parseInt(document.getElementById('cols').value)).keys()].forEach((col, colIndex) => {
          col = row.insertCell(colIndex).innerHTML = rowIndex + ' ' + colIndex;
        })
      })
      // смысла нет хранить var rows = []; var cells = [];
      // потому что данные уже есть в самой таблице
      console.log(table.rows.length, table.rows[0].cells.length, table.rows[0].cells[0].innerHTML)
    }
  </script>
0
1 / 1 / 0
Регистрация: 18.06.2018
Сообщений: 91
05.07.2018, 13:58  [ТС]
Цитата Сообщение от Evgen1337 Посмотреть сообщение
// смысла нет хранить var rows = []; var cells = [];
* * * // потому что данные уже есть в самой таблице
Возможно и нет, но я то думал что например массив cells, будет в себе хранить линки на каждую ячейку, что в свою очередь даст возможность вытягивать значения, прописывать ивенты. Или если получить по id таблицу, то ее в js можно распарсить как массив?

Цитата Сообщение от zlojnaxa Посмотреть сообщение
Пару дней...?
Есть немного практики в java


В целом понимаю что мне не хватает теории, нужно много читать) Просто хочу/нужно/интересно выполнить задачу побыстрее)
0
249 / 162 / 68
Регистрация: 10.12.2017
Сообщений: 558
05.07.2018, 14:26
Лучший ответ Сообщение было отмечено MadMetal как решение

Решение

вот это (https://github.com/getify/You-Dont-Know-JS) все почитай, там на самом деле не много
Цитата Сообщение от Evgen1337 Посмотреть сообщение
console.log(table.rows.length, table.rows[0].cells.length, table.rows[0].cells[0].innerHTML)
Цитата Сообщение от MadMetal Посмотреть сообщение
Или если получить по id таблицу, то ее в js можно распарсить как массив?
table.rows.length = кол-во строк
table.rows[0].cells.length = кол-во колонок
table.rows[0].cells[0].innerHTML = значение ячейки
table.rows[0].cells[0].addEventListener('click', (e) => console.log(e)) = событие
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.07.2018, 14:26
Помогаю со студенческими работами здесь

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

Доступ к ячейкам таблицы
Здравствуйте. Мне надо получить доступ(прочитать, установить) к ячейкам таблицы по принципу матрицы, то есть в таком виде: ...

Обход значений по ячейкам таблицы
Всем доброго времени суток! Есть таблица по сотрудникам, в которой часть колонок отводится под отработанные часы. Проставлять значения...

Обращение к ячейкам таблицы в GUI
Добрый день, уважаемые форумчане! Создал программу которая представляет собой большую таблицу размером 13х15 с помощью guide. Теперь хочу...

Объеденить две таблицы по двум ячейкам
Здравствуйте! Подскажите пожалуйста, как из двух таблиц (лист1 и лист2),сравнивая по двум столбцам(фио и дата рождения), получить третью...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
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. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru