javascript - 如何从 div 级别删除动态生成的字段?

标签 javascript php jquery html css

我的想法是在单击“添加”按钮时最多创建 20 个 block (它包含一些输入字段),如果您点击“添加”按钮,则可以添加新 block ,这已成功完成。现在我想删除在单击“添加”按钮时创建的 block 。

例如:如果用户使用“添加”按钮创建了 5 个区 block 。如果用户点击 block 2 中的“减号”按钮,则 block 2 应从列表中删除, block 的计数应相应更新。 enter image description here http://www.w3schools.com/code/tryit.asp?filename=FADO51NINJMD

<html>
<head>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script type="text/javascript">
        var i = 1;
        $(document).ready(function () {
            $("#commentForm").validate();
        });
        function add()
        {   
            var objTo = document.getElementById('room_fileds')
            var divtest = document.createElement("div");
            var label = document.createElement('label');
            label.innerHTML = '<h5 class="label">Block '+i+'<input type="button" value="Minus" onclick="minus()"></h5>';
            divtest.appendChild(label);
            var length = $('#Length').clone().attr('id', 'Length' + i).attr('name', 'Length' + i);
            var attribute = $('#Attribute').clone().attr('id', 'Attribute' + i).attr('name', 'Attribute' + i);
            var column = $('#Column').clone().attr('id', 'Column' + i).attr('name', 'Column' + i);
            length.appendTo(divtest);
            attribute.appendTo(divtest);
            column.appendTo(divtest);
            objTo.appendChild(divtest);
            i++
        }

        function minus()
        {   
        }


    </script>
</head>
<body>
    <form id="commentForm" method="post" action="">
        <div id="room_fileds">
       Static Field
            <input type="text" name="Length" maxlength="2" id="Length" onkeypress="return isNumberKey(event);" placeholder="Field 1 Length"  class="form-control required">
             <input type="text" name="Attribute" id="Attribute"  placeholder="Field 1 Attribute" class="form-control" required>
              <select name="Column" id="Column" class="required" >
              <option selected  value="">Field Column </option>
              <option value="1">YES</option>
              <option value="2">NO</option>
              </select>
              </div>
              <br><br>
    <input class="submit" type="submit" value="Submit1">
    <input type="button" value="Add" onclick="add()">
</form>
</body>
</html>

最佳答案

创建div节点时设置id

divtest.setAttribute("id", "div" + i);

对于 minus 函数,在 onclick 中传递创建的 id 数字

label.innerHTML = '<h5 class="label">Block '+i+'<input type="button" onclick="minus('+i+')" value="Minus"></h5>';

并设置minus函数

function minus(_id)
{
    var _div_id = "div" + _id;
    var _div_elem = document.getElementById(_div_id);
    _div_elem.parentNode.removeChild(_div_elem);
}

var i = 1;
$(document).ready(function () {
	//$("#commentForm").validate();
});
function add()
{   
	var objTo = document.getElementById('room_fileds')
	var divtest = document.createElement("div");
	divtest.setAttribute("id","div" + i);
    
	var label = document.createElement('label');
	label.innerHTML = '<h5 class="label">Block '+i+'<input type="button" onclick="minus('+i+')" value="Minus"></h5>';
    
	divtest.appendChild(label);
	var length = $('#Length').clone().attr('id', 'Length' + i).attr('name', 'Length' + i);
	var attribute = $('#Attribute').clone().attr('id', 'Attribute' + i).attr('name', 'Attribute' + i);
	var column = $('#Column').clone().attr('id', 'Column' + i).attr('name', 'Column' + i);
	
	length.appendTo(divtest);
	attribute.appendTo(divtest);
	column.appendTo(divtest);
	objTo.appendChild(divtest);
	i++
}
			
function minus(_id)
{
	var _div_id = "div" + _id;
	var _div_elem = document.getElementById(_div_id);
	_div_elem.parentNode.removeChild(_div_elem);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<form id="commentForm" method="post" action="">
		<div id="room_fileds">Static Field
			<input type="text" name="Length" maxlength="2" id="Length" onkeypress="return isNumberKey(event);" placeholder="Field 1 Length"  class="form-control required">
			<input type="text" name="Attribute" id="Attribute"  placeholder="Field 1 Attribute" class="form-control" required>
			<select name="Column" id="Column" class="required" >
				<option selected  value="">Field Column </option>
				<option value="1">YES</option>
				<option value="2">NO</option>
				</select>	
			</div><br><br>
		<input class="submit" type="submit" value="Submit1">
		<input type="button" value="Add" onclick="add()">
	</form>

关于javascript - 如何从 div 级别删除动态生成的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40945689/

相关文章:

javascript - 如何摆脱 Ionic/Cordova 模拟器中的 Facebook 警告?

javascript - Node.js https 请求在本地工作,但部署到 heroku 时抛出超时

javascript - 如何为每个下一个数组元素添加新的分钟值?

php - Return-Path header 由 postfix 重写

php - Laravel DB 失去连接(大概)

javascript - 在滚动 jQuery 上将 div 包装/展开到另一个 div 中

javascript - 如何通过 refs 访问子组件函数

php - Curl 或 Mysql 服务器使用

javascript - Bootstrap 3 的 Ladda UI 不工作?请查看我的代码并告诉我修复

JQuery/CSS3 动画冲突