gpt4 book ai didi

javascript - 删除一个类并添加另一个类(附加 HTML 标签 onclick)

转载 作者:行者123 更新时间:2023-12-02 21:15:52 25 4
gpt4 key购买 nike

我是否能够添加一个删除按钮来替换下图中的添加按钮,并从每当删除某一行时声明的数组对象中删除该行中的值?

html 图像(部分)

克隆之前

Before Clone

克隆后

After Clone

期望的结果

Desired Result

HTML 页面

                <div id="selections">
<div class="form-group row controls selection">
<label for="selection01" class="col-sm-2 col-form-label">Selection Pair</label>
<div class="col-sm-2">
<select class="form-control selection01" id="selection010" placeholder="Selection 01" onchange="addNewSelection()"></select>
</div>
<div class="col-sm-2">
<select class="form-control selection02" id="selection020" placeholder="Selection 02" onchange="addNewSelection()"></select>
</div>
<div class="col-sm-2">
<input type="number" min="0.00" max="10000.00" step="1.00" class="form-control" id="productQuantity0" placeholder="Quantity">
</div>
<div class="col-sm-2">
<input type="button" class="btn btn-success" id="addSelection" value="Add Selection" onclick="addNewSelectionPair()"></button>
</div>
</div>
</div>
<小时/>

脚本

  function addNewSelectionPair() {
// Get all selections by class
var selection = document.getElementsByClassName('selection');

// Get the last one
var lastSelection = selection[selection.length - 1];

// Clone it
var newSelection = lastSelection.cloneNode(true);

// Update the id values for the input
newSelection.children[1].children[0].id = 'selection01' + selection.length;
newSelection.children[2].childrne[0].id = 'selection02' + selection.length;
newSelection.children[3].children[0].id = 'productQuantity' + selection.length;

// Add it to selectionss
document.getElementById('selections').appendChild(newSelection)
}

function getValues() {
// Get all selections by class
var selections = document.getElementsByClassName('selection');
var values = [];

for(var i = 0; i < selections.length; i++) {
// Add the values into the array
values.push([
document.getElementById('selection01' + i).value,
document.getElementById('selection02' + i).value
document.getElementById('productQuantity' + i).value
]);
}

return values;
}

最佳答案

此脚本将复制最后一行输入。它还会收集输入并将其值存储在 3d 数组中进行处理。

function addSection() {
//Get all sections by class
var sections = document.getElementsByClassName('section');

//Get the last one
var lastSection = sections[sections.length - 1];

//Clone it
var newSection = lastSection.cloneNode(true);

//Add it do sections
document.getElementById('sections').appendChild(newSection);

//Recalucate the Ids for the removal
//Ids all get shifted after adding or removing a section
calcRemovalIds();
}

function getValues() {
//Get all inputs by class
var sectionsOne = document.getElementsByClassName('section01');
var sectionsTwo = document.getElementsByClassName('section02');

var values = [];

//Loop the inputs
for(var i = 0; i < sectionsOne.length; i++) {
//Add the values to the array
values.push([
sectionsOne[i].value,
sectionsTwo[i].value
]);
}

return values;
}

function removeSection(id = undefined) {
//Get all sections by class
var sections = document.getElementsByClassName('section');

//If there is only one row left, just skip
if (sections.length == 1) return true;

//If not id was given, remove the last row
if (id == undefined) id = sections.length - 1;

//Get the last one
var lastSection = sections[id];

//Remove it
lastSection.parentNode.removeChild(lastSection);

//Recalucate the Ids for the removal
//Ids all get shifted after adding or removing a section
calcRemovalIds();
}

function calcRemovalIds() {
var btns = document.getElementsByClassName('button');

for (var i = 0; i < btns.length; i++) {
//Check if its the last button
if (i + 1 == btns.length) {
//Make it a addSection button
btns[i].innerHTML = '+';
btns[i].setAttribute('onclick', 'addSection()');
} else {
//Make is a removeSection button
btns[i].innerHTML = '-';
btns[i].setAttribute('onclick',
'removeSection(' + i +')'
);
}
}
}
<div>
<div>
<h2>Product</h2>
<input id="product" placeholder="Product" />
</div>
<div id="sections">
<div class="section">
<input class="section01" placeholder="Section One" />
<input class="section02" placeholder="Section Two" />
<button class="button" onclick="addSection()">+</button>
</div>
</div>
</div>

<button onclick="
document.getElementById('values').innerHTML = JSON.stringify(getValues());
">Get Values</button>

<div id="values"></div>

关于javascript - 删除一个类并添加另一个类(附加 HTML 标签 onclick),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60974057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com