如何在删除字段时重置JavaScript变量计数
How can one reset a JavaScript variable count upon deleting a field?
我仔细阅读了删除字段后重置JavaScript计数器,但它似乎不完全符合我的要求。
正如我的问题所述,当多个字段共享计数器变量作为其ID的一部分并用于指示添加了哪一行新字段的标题时,是否可以重置计数器变量?
看看我的JSFiddle,看看我在说什么。最多添加6或7个人,然后点击其中一个删除。
https://jsfiddle.net/Born2Discover/e4up2pfs/1/
<script>
var mycount = 1;
var mylimit = 10;
// My Add Function
function addSomeone(addPerson) {
if (mycount == mylimit) {
alert("You have reached the max number of people " + mycount + " inputs");
} else {
var newPersonDiv = document.createElement('div');
newPersonDiv.id = ("Person" + (mycount + 1) + "Div");
newPersonDiv.innerHTML = "<br/><span>Person " + (mycount + 1) + "</span><br/><label>First</label><input type='text' name='FirstName" + (mycount + 1) + "'><label>Middle</label><input type='text' name='MiddleName" + (mycount + 1) + "'><label>Last</label><input type='text' name='LaneName" + (mycount + 1) + "'><span onClick='deleteDIV()'> Delete</button></span>";
document.getElementById(addPerson).appendChild(newPersonDiv);
mycount++;
}
}
// My Delete Function
function deleteDIV() {
//Desired function to delete new fields and reset counter
Person4Div.remove(); // < this part posted for reference
//This would obviously delete Div4 but would not reset the counter and numbers
//Click to add 6 people for example and then hit delete on either one to see what I mean
}
</script>
<input type="button" value="Add Person" onclick="addSomeone('new');">
<div id="addPerson">
<form>
<label>First Name</label>
<input type="text" name="First Name">
<label>Middle Name</label>
<input type="text" name="Middle Name">
<label>Last Name</label>
<input type="text" name="Last Name">
<div id="new"></div>
<input id="submitButton" type="submit" value="Submit">
</form>
</div>
谢谢。
编辑:我想我知道你想要什么
首先,您的按钮不是按钮,因为它以<span>
开头。制作
<button onClick='deleteDIV(event)'>Delete</button>
注意括号内的event
。这很重要。这允许您访问实际事件,使用event.target
可以获得实际的目标元素,在本例中为按钮。
在div中添加一个data-number
属性,这样可以更容易地检索数字
newPersonDiv.setAttribute('data-number', mycount+1);
更改deleteDIV函数如下:
function deleteDIV() {
// prevents the form from submitting
event.preventDefault();
// the number of the element that is deleted
var number = event.target.parentNode.getAttribute('data-number');
// the next div after the one to be deleted
var nextPersonInput = event.target.parentNode.nextSibling;
// as long as there is a next div
while(nextPersonInput != null){
// decrease the data-number by 1
nextPersonInput.setAttribute('data-number', nextPersonInput.getAttribute('data-number') - 1);
// move one div further
nextPersonInput = nextPersonInput.nextSibling;
}
// delete the div itself
document.getElementById('new').removeChild(event.target.parentNode);
// decrease the counter
// since you only delete 1 element at once just decreasing by 1 is sufficient
mycount--;
}
由于event.target
是button
,其parentNode指的是div
,它是新div
的子级。
这样,您甚至不必再向div插入Id。
剩下的就是实际更改显示的信息和属性,例如name
和middlename
。到目前为止,显示的数字还没有改变。但我认为你应该设法做到这一点。如果没有,请问我。
我希望这能有所帮助。
相关文章:
- 将函数的上下文应用于javascript变量
- 如何通过ajax刷新JSF填充的javascript变量
- Javascript变量赋值|
- 限制javascript变量的最小/最大整数
- 来自文本输入null的html javascript变量
- 访问jsrender模板中的全局javascript变量并更新它
- 从数据库中获取数据并插入JavaScript变量
- 如何将javascript变量传递到Meteor Spacebars模板中
- 将JavaScript变量保存到Rails模型
- 在if语句下的html中使用javascript变量
- Javascript变量分配-按类别
- 操作javascript变量[HTML]以只显示文本
- 无法比较javascript变量
- 如何将smarty变量与javascript变量进行比较
- 如何使用PHP将javascript变量添加到mysql数据库中
- Javascript 变量使用 jquery 查找变量
- 重新加载页面时Javascript变量发生变化
- 在asp classic中使用javascript变量
- 全局Javascript变量变为null
- 如何向服务器端提交javascript变量