|
15.05.2019, 22:01
|
Новичок на форуме
|
|
Регистрация: 15.05.2019
Сообщений: 4
|
|
Создание строк и столбцов JS при клике
В джсе новичек.
есть таблица с N количеством строк и есть соответственно столбцы.
Нужно , что бы при каждом клике добавлялся один столбец с нужным количеством строк.
У меня получается создать только 1 блок
https://codepen.io/Nikapalitis/pen/zQZqyo
|
|
15.05.2019, 22:33
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,103
|
|
|
|
15.05.2019, 22:37
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,103
|
|
Сообщение от Nikandro
|
Нужно , что бы при каждом клике добавлялся один столбец с нужным количеством строк.
|
цикл по всем строкам appendChild
|
|
15.05.2019, 22:50
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,103
|
|
Nikandro,
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>CodePen - A Pen by Niksan</title>
<style>
*{
padding: 0;
margin: 0;
box-sizing: border-box;
}
.main{
background: rgb(224, 224, 224);
width: 100%;
display: flex;
}
.sidebar{
width: 15%;
height: 900px;
background-color: rgb(180, 180, 180);
}
.h1{
font-size: 1.5em;
padding: 5px;
padding-left: 15px;
}
.info{
background: rgb(255, 223, 211);
padding: 5px;
padding-left: 15px;
}
.table-knopki{
width: 100%;
height: 50px;
background: aliceblue;
display: flex;
}
.tab-text{
font-size: 2em;
font-weight: bold;
padding: 5px;
margin-left: 20px;
padding-right: 200px;
}
.tab{
width: 100%;
margin-top: 60px;
margin-left: 30px;
}
button{
padding: 5px;
border: 0;
color: azure;
font-weight: bold;
margin: 5px;
}
th,td{
border: 1px solid black;
text-align: center;
width: 30px;
height: 30px;
padding: 15px;
}
.first-n{
width: 200px;
height: 30px;
border: 1px solid black;
background: rgb(168, 167, 167);
}
.knopka {
background: orangered;
}
</style>
</head>
<body translate="no">
<div class="tab">
<div class="table-knopki">
<p class="tab-text"> Table</p>
<button class="knopka green" onclick="add()">Add day</button>
<button class="knopka red" onclick="remove()">Remove Day</button>
<button class="knopka blue">Update Table</button>
</div>
<table>
<tr id="myTD">
<td class="first-n"></td>
<td>Average</td>
</tr>
<tr>
<td>Student 1</td>
<td>3.0</td>
</tr>
<tr>
<td>Student 2</td>
<td>3.0</td>
</tr>
<tr>
<td>Student 3</td>
<td>3.0</td>
</tr>
</table>
</div>
<script>
function add() {
var para = document.createElement("TD");
[...document.querySelectorAll("tr")].forEach(tr => tr.append(para.cloneNode()))
};
function remove() {
[...document.querySelectorAll("tr td:last-child")].forEach(td => td.remove());
}
</script>
</body>
</html>
|
|
16.05.2019, 17:56
|
Новичок на форуме
|
|
Регистрация: 15.05.2019
Сообщений: 4
|
|
Большое спасибо
Сообщение от рони
|
Nikandro,
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>CodePen - A Pen by Niksan</title>
<style>
*{
padding: 0;
margin: 0;
box-sizing: border-box;
}
.main{
background: rgb(224, 224, 224);
width: 100%;
display: flex;
}
.sidebar{
width: 15%;
height: 900px;
background-color: rgb(180, 180, 180);
}
.h1{
font-size: 1.5em;
padding: 5px;
padding-left: 15px;
}
.info{
background: rgb(255, 223, 211);
padding: 5px;
padding-left: 15px;
}
.table-knopki{
width: 100%;
height: 50px;
background: aliceblue;
display: flex;
}
.tab-text{
font-size: 2em;
font-weight: bold;
padding: 5px;
margin-left: 20px;
padding-right: 200px;
}
.tab{
width: 100%;
margin-top: 60px;
margin-left: 30px;
}
button{
padding: 5px;
border: 0;
color: azure;
font-weight: bold;
margin: 5px;
}
th,td{
border: 1px solid black;
text-align: center;
width: 30px;
height: 30px;
padding: 15px;
}
.first-n{
width: 200px;
height: 30px;
border: 1px solid black;
background: rgb(168, 167, 167);
}
.knopka {
background: orangered;
}
</style>
</head>
<body translate="no">
<div class="tab">
<div class="table-knopki">
<p class="tab-text"> Table</p>
<button class="knopka green" onclick="add()">Add day</button>
<button class="knopka red" onclick="remove()">Remove Day</button>
<button class="knopka blue">Update Table</button>
</div>
<table>
<tr id="myTD">
<td class="first-n"></td>
<td>Average</td>
</tr>
<tr>
<td>Student 1</td>
<td>3.0</td>
</tr>
<tr>
<td>Student 2</td>
<td>3.0</td>
</tr>
<tr>
<td>Student 3</td>
<td>3.0</td>
</tr>
</table>
</div>
<script>
function add() {
var para = document.createElement("TD");
[...document.querySelectorAll("tr")].forEach(tr => tr.append(para.cloneNode()))
};
function remove() {
[...document.querySelectorAll("tr td:last-child")].forEach(td => td.remove());
}
</script>
</body>
</html>
|
|
|
16.05.2019, 20:08
|
Новичок на форуме
|
|
Регистрация: 15.05.2019
Сообщений: 4
|
|
рони
В вашей статье , что вы кинули там аджакс и у меня глаза разбегаются (не понимаю)
Сейчас я добавил в ячейки input, но как сделать так , что бы при клике добавлялись и ячейки ввода input тоже , а не пустые td / tr.
пытался сделать по вашему методу , но так не работает
Код:
|
function add() {
var para = document.createElement("TD");
[...document.querySelectorAll("tr")].forEach(tr => tr.append(para.cloneNode()))
var a = document.createElement("INPUT");
[...document.querySelectorAll("input")].forEach(input => input.append(a.cloneNode))
}; |
|
|
16.05.2019, 20:15
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,103
|
|
Nikandro,
function add() {
var para = document.createElement("TD");
var a = document.createElement("INPUT");
para.append(a);
[...document.querySelectorAll("tr")].forEach(tr => tr.append(para.cloneNode(true)))
};
|
|
|
|