在Javascript中添加和删除表单

时间:2016-08-30 07:57:47

标签: javascript html

我目前有以下代码,每次用户点击按钮时都会添加一个新的输入框。有没有办法创建一个按钮来删除最后生成的输入框?

var data = '<label>Temperature (K):</label><input type="number" name="temp"/>'


function addNew() {
  var newContent = document.createElement('div');
  newContent.innerHTML = data;
  document.getElementById('target').appendChild(newContent);
}
<div id="target"></div>

<input id="add" type="button" value="Add New" onclick="addNew()" />

7 个答案:

答案 0 :(得分:1)

将输入推送到数组中:

inputs=[];

inputs.push(newContent);
//put this in your addNew function

现在你可以从该数组中获取最后一个元素并将其删除

function remove(){
if(inputs.length>0){
elem=inputs.pop();
elem.parentNode.removeChild(elem);
}
}

答案 1 :(得分:0)

将您添加到表单的所有内容放在包装节点中:

var data = '<span><label>Temperature (K):</label><input type="number" name="temp"/></span>'

您可以删除“目标”节点的最后一个孩子:

function removeLast() {
    document.getElementById("target").lastChild.remove();
}

答案 2 :(得分:0)

以下是要删除已添加的div

的java脚本示例

首先,您需要创建按钮以删除新添加的行 并且你需要删除它的父元素(最后添加的div)。

 var data='<label>Temperature (K):</label><input type="number" name="temp"/> <input type="button" value="Remove" onclick="removeDiv(this)"  />';


function addNew() {
   var newContent = document.createElement('div');
  newContent.innerHTML = data;
  document.getElementById('target').appendChild(newContent);
  }

function removeDiv(args){
args.parentNode.remove()
}

示例JSBIN

答案 3 :(得分:0)

只需保留已添加元素的列表:

var data = '<label>Temperature (K):</label><input type="number" name="temp"/>'

var addedList = []; 
function addNew() {
  var newContent = document.createElement('div');
  newContent.innerHTML = data;
  addedList.push(document.getElementById('target').appendChild(newContent));
}
function removeLast() {
    if (addedList.length) {
        document.getElementById('target').removeChild(addedList.pop());
    }
}
<div id="target"></div>

<input id="add" type="button" value="Add New" onclick="addNew()" />
<input id="remove" type="button" value="Remove last added" onclick="removeLast()" />

如果您只想要最后一个元素而不是列表:

var data = '<label>Temperature (K):</label><input type="number" name="temp"/>'

var addedEl = null; 
function addNew() {
  var newContent = document.createElement('div');
  newContent.innerHTML = data;
  addedEl = document.getElementById('target').appendChild(newContent);
}
function removeLast() {
    if (null !== addedEl) {
        document.getElementById('target').removeChild(addedEl);
        addedEl = null;
    }
}
<div id="target"></div>

<input id="add" type="button" value="Add New" onclick="addNew()" />
<input id="remove" type="button" value="Remove last added" onclick="removeLast()" />

答案 4 :(得分:0)

简单选择最后一个孩子并将其删除

function removeLast(){
 document.getElementById("target").lastChild.remove(); 
}

这是jsfiddle

https://jsfiddle.net/aqev0pu4/

答案 5 :(得分:0)

添加:

<input id="remove" type="button" value="Remove last element" onclick="removeLastElem()" />

function removeLastElem() {
    document.getElementById('target').lastChild.remove()
}

EXAMPLE:)

答案 6 :(得分:0)

跟踪最后插入的输入标记,其中一个计数器作为其id的子字符串,并通过使用计数器读取id来删除最后一个。

var inputCounter = 1;

function addNew() {
	var data = '<label>Temperature (K):</label><input type="number" id="counter' + inputCounter + '" name="temp"/>';
	inputCounter++;

	var newContent = document.createElement('div');
	newContent.innerHTML = data;
	document.getElementById('target').appendChild(newContent);
}

function removeLast() {
	if (inputCounter > 1) {
		inputCounter--;
		var last = document.getElementById("counter" + inputCounter).parentElement;
		document.getElementById('target').removeChild(last);
	} else {
		alert("Add new inputs. No last inserted input found.")
	}
}
<div id="target"></div>

<input id="add" type="button" value="Add New" onclick="addNew()" />
<input id="remove" type="button" value="Remove last added" onclick="removeLast()" />