Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/55: Рейтинг темы: голосов - 55, средняя оценка - 4.76
-9 / 0 / 0
Регистрация: 23.02.2013
Сообщений: 86
1

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

11.09.2017, 14:40. Показов 10761. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребята, помогите. как добавить строку я разобралась, а вот что касается столбца не получается. имеется такой код HTML
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<table id="table">
<div class="addcolumn">
        <button id="addColumn" onClick="CreateEle()"><p>+</p></button>
 </div>
 
                       <tr>
            <th></th><th></th><th></th><th></th> 
 
            </tr>
            <tr> 
                <td></td><td></td><td></td><td></td>
            </tr>
            <tr>
                <td></td><td></td><td></td><td></td>
            </tr>
            <tr>
                <td></td><td></td><td></td><td></td>
            </tr>
    
</table>
Нужно по нажатию на кнопку добавить столбец.

Javascript
1
2
3
4
5
6
function CreateEle() {
    
var row = document.getElementById("table");
var x = row.insertCell(0);
x.innerHTML = "New cell";
}
Пыталась что-то типа такого сделать, но увы(
Пожалуйста, не судите строго. возможно, я чего-то не до понимаю, но я сюда и обращаюсь что бы разобраться
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.09.2017, 14:40
Ответы с готовыми решениями:

Вывод новой Form, при двойном клике на ячейку таблицы выбранного столбца
Есть DBGridEh1. В ней есть колонка &quot;ФИО&quot; и другие в Form1. Надо, чтобы при нажатии на строчку в...

Событие при клике на кнопку
Здравствуйте! Столкнулась с проблемой... Нужно сделать, чтобы при нажатии на кнопку переменная...

Не переходит при клике на кнопку
Здравствуйте. Сразу к делу. Имеется форма &lt;form action=&quot;https://vk.com&quot;&gt; &lt;input...

Событие при при клике на кнопку во второй форме
Привет ребята! Подскажите как реализовать - во второй форме, при нажатии на кнопку сохранить, в...

9
the hardway first
Эксперт JS
2461 / 1836 / 906
Регистрация: 05.06.2015
Сообщений: 3,603
11.09.2017, 15:16 2
Лучший ответ Сообщение было отмечено Викторка как решение

Решение

Викторка, чтобы добавить столбец надо добавить ячейку каждой строке.
HTML5
1
2
3
4
5
6
<table class="table">
  <tr><td></td><td></td></tr>
  <tr><td></td><td></td></tr>
  <tr><td></td><td></td></tr>
</table>
<button type="button" class="btn add-col">Add column</button>
Javascript
1
2
3
4
5
6
7
var table = document.querySelector('table.table');
document.querySelector('button.add-col').onclick = function () {
  var rows = table.tBodies[0].rows;
  for(var i = 0, l = rows.length; i < l; i++) {
    rows[i].insertCell(-1);
  }
}
https://jsfiddle.net/j2FunOnly/wgqLbgv5/
1
-9 / 0 / 0
Регистрация: 23.02.2013
Сообщений: 86
11.09.2017, 16:46  [ТС] 3
j2FunOnly, спасибо. Вы крутой))
но у меня теперь другая проблема. выдает ошибку и пишет, что "cannot set property 'onclick' of null" . что ему не нравится??
Миниатюры
Добавление столбца таблицы при клике на кнопку  
0
the hardway first
Эксперт JS
2461 / 1836 / 906
Регистрация: 05.06.2015
Сообщений: 3,603
11.09.2017, 17:16 4
Викторка, вы скрипт вставляете в head и он выполняется когда кнопки еще нет в документе. поместите перед закрывающим тэгом body.
1
-9 / 0 / 0
Регистрация: 23.02.2013
Сообщений: 86
11.09.2017, 18:18  [ТС] 5
j2FunOnly, спасибо помогло!
У меня появилась новая проблема. При добавление строк и столбцов, образуется пустое пространство.
Вы не подскажите как его заполнить теми же строками или столбцами? Буду Вам признательна!
Миниатюры
Добавление столбца таблицы при клике на кнопку  
0
the hardway first
Эксперт JS
2461 / 1836 / 906
Регистрация: 05.06.2015
Сообщений: 3,603
11.09.2017, 18:44 6
Викторка, покажите код
0
-9 / 0 / 0
Регистрация: 23.02.2013
Сообщений: 86
11.09.2017, 18:57  [ТС] 7
j2FunOnly,
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
function CreateForm() {
    document.querySelector('table').innerHTML+='<table border="1"><tr><td></td><td></td><td></td><td></td></tr></table>';
}
 
var table = document.querySelector('table');
document.querySelector('button.add-col').onclick = function() {
  var rows = table.tBodies[0].rows;
  for (var i = 0, l = rows.length; i < l; i++) {
    var newCell = rows[i].insertCell(-1);
    newCell.className = 'new';
    }
}
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
 
<table class="table">
<div class="addcolumn">
        <button id="addColumn" onClick="CreateElement()" type="button" class="button add-col"><p style="color: white;
    font-size:20px;">+</p></button>
 </div>
                        <tr>
            <td></td><td></td><td></td><td></td> 
 
            </tr>
            <tr> 
                <td></td><td></td><td></td><td></td>
            </tr>
            <tr>
                <td></td><td></td><td></td><td></td>
            </tr>
            <tr>
                <td></td><td></td><td></td><td></td>
            </tr>
    
</table>
 
<div class="addLine">
        <button id="addLine" onClick="CreateForm()"><p style="color: white;
    font-size:20px;">+</p></button>
 </div>
0
the hardway first
Эксперт JS
2461 / 1836 / 906
Регистрация: 05.06.2015
Сообщений: 3,603
11.09.2017, 23:16 8
Лучший ответ Сообщение было отмечено Викторка как решение

Решение

Викторка, всё не так. Вы создаете таблицу в таблице. Классы и id в HTML задаются в стиле kebab-case, потому что. Имена функций и переменных в JS задаются в стиле camelCase. Стили вынести в CSS. Inline-обработчики...

Причешем разметку. Зачем вам параграф в кнопке?!
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
<table class="table">
  <!-- div class="addcolumn" -->
  <div class="add-column">
    <!-- button id="addColumn" onClick="CreateElement()" type="button" class="button add-col" -->
    <button id="add-column" type="button" class="button add-col">
      <!-- p style="color: white;font-size:20px;" -->
      +
      <!-- /p -->
    </button>
  </div>
  <tr>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
  </tr>
  <tr>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
  </tr>
  <tr>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
  </tr>
  <tr>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
  </tr>
</table>
<!-- div class="addLine" -->
<div class="add-row">
  <!-- button id="addLine" onClick="CreateForm()" -->
  <button id="add-row" class="button">
    <!-- p style="color: white; font-size:20px;" -->
    +
    <!-- /p -->
  </button>
</div>
Сначала научимся создавать ячейку в строке. С анимацией, CSS нам в помощь
Javascript
1
2
3
4
5
6
7
8
9
10
function createCell(row) {
  var newCell = row.insertCell(-1);
  newCell.className = 'created';
  setTimeout(function() {
    newCell.className = 'new';
  }, 100);
  setTimeout(function() {
    newCell.className = '';
  }, 500);
}
А вот и стили подъехали
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
.button {
  color: white;
  font-size: 20px;
}
 
td {
  border: 1px solid black;
  transition: background-color .5s, border-color .2s;
  width: 10px;
  height: 10px;
}
 
td.created {
  border-color: transparent;
}
 
td.new {
  border: 1px solid green;
  background-color: #b3ffb3;
}
Создаем строку
Javascript
1
2
3
4
5
6
7
8
9
// function CreateForm() {
function createRow(table) {
  // document.querySelector('table').innerHTML += '<table border="1"><tr><td></td><td></td><td></td><td></td></tr></table>';
  var newRow = table.insertRow(-1);
  var colsLength = table.tBodies[0].rows[0].cells.length;
  for (var i = 0; i < colsLength; i++) {
    createCell(newRow);
  }
}
Создаем столбец
Javascript
1
2
3
4
5
6
function createColumn(table) {
  var rows = table.tBodies[0].rows;
  for (var i = 0, l = rows.length; i < l; i++) {
    createCell(rows[i]);
  }
}
И вешаем на кнопочки наши функции
Javascript
1
2
3
4
5
6
7
8
9
document.addEventListener('DOMContentLoaded', function() {
  var table = document.querySelector('table.table');
  document.querySelector('#add-column').onclick = function() {
    createColumn(table);
  }
  document.querySelector('#add-row').onclick = function() {
    createRow(table);
  }
});
https://jsfiddle.net/j2FunOnly/qm555n5v/
1
-9 / 0 / 0
Регистрация: 23.02.2013
Сообщений: 86
12.09.2017, 10:09  [ТС] 9
j2FunOnly, аааааааААА. СПАСИБО. оооочень помогли!!!
0
-9 / 0 / 0
Регистрация: 23.02.2013
Сообщений: 86
15.09.2017, 17:14  [ТС] 10
j2FunOnly, Простите, но мне снова нужна Ваша помощь. проблема с удалением столбцов. Есть также две кнопки, но у них задача удалять строки и столбцы. как при нажатие удалить строки я разобралось, а вот со столбцами пишет мне ошибку. возможно я и во все не правильно написала для него код.
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 function deleteLine() {
    document.querySelector('table').deleteRow(0);
}
 
 function deleteCell() {
   document.querySelector('table').deleteColumn(0);
    var row = document.getElementById("deleteColumn");
row.deleteCell(0);
}
 
  document.addEventListener('DOMContentLoaded', function() {
  var table = document.querySelector('table.table');
  document.querySelector('#deleteColumn').onclick = function() {
    deleteColumn(table);
  }
  document.querySelector('#deleteLine').onclick = function() {
    deleteLine(table);
  }
});
deleteColumn - удалить столбец,
deleteLine - удалить строку
буду признательно если поможете разобраться.
а ошибки при удаление столбца пишет такую "deleteColumn is not a function"
0
15.09.2017, 17:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.09.2017, 17:14
Помогаю со студенческими работами здесь

Изменение контента при клике на кнопку
Помогите пожалуйста оживить сайт... Я что понял... При клике на шляпу, та должна появится у тебя...

Запустить таймер при клике на кнопку
Всем доброго дня нашёл таймер всё работает как нужно. Но есть проблемка. Как сделать чтобы он...

При клике на кнопку запустить код
В общем я новичок в области web программирования и вот столкнулся с такой диалемой.Нужно при...

Форма появляется при клике на кнопку
Создаю форму как на скрине, код &lt;div&gt; &lt;asp:Button ID=&quot;Button2&quot; runat=&quot;server&quot;...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru