我已經能夠在按鈕單擊時動態添加一層輸入的表單部分。這個新的div附加在前面的div之後,我試圖做一個按鈕,如果用戶不需要它也可以刪除這個層。動態刪除輸入/ DOM錯誤
我的問題是我似乎無法刪除div。我可以添加但不能刪除。當我查看DOM時,可以看到何時單擊addDiv按鈕,它確實添加了div,並且所有內容都在div內,因此它正在被正確地附加。但是,當我嘗試刪除新追加的DIV從它的父元素,我拋出了以下錯誤:
addJob.js:18 Uncaught TypeError: Cannot read property 'parentNode' of undefinedremoveJob @ addJob.js:18onclick @ index.html:1
我不確定如何做的方式,只是如何反向定義我removeJob()
功能它被添加了。
CodePen:http://codepen.io/theodore_steiner/pen/WGEmGr
var i = 0;
function addJob() {
if (i <= 1) {
i++;
var div = document.createElement("div");
div.innerHTML = '<input type="text" class="three-lines" name="schoolBoard_' + i + '"> '+
'<input type="text" class="three-lines" name="position_' + i + '"> '+
'<input type="text" class="three-lines" name="years_' + i + '">'+
'<input type="button" value="-" onclick="removeJob()">';
document.getElementById("employmentHistory").appendChild(div);
}
}
function removeJob(div) {
document.getElementById("employmentHistory").removeChild(div.parentNode);
i--;
};
button {
height: 20px;
width: 20px;
background: none;
margin-left: 10px;
margin-top: 30px;
margin-bottom: 25px;
}
input[type="button"] {
height: 20px;
width: 20px;
background: none;
border: 1px solid #ccc;
outline: none;
margin-left: 20px;
}
input[type="button"]:focus {
outline: none;
}
input.three-lines {
margin-left: 18px;
background: none;
border: none;
border-bottom: 1px solid #b3c1cc;
width: 150px;
margin-bottom: 30px;
}
<div id="page2-content">
<div class="input-group" id="previousTeachingExperience">
<label id="teachingExpierience">Teaching Experience *</label>
<div id="employmentHistory">
<input type="text" class="three-lines" name="schoolBoard_1" placeholder="School Board" onblur="this.placeholder='Email'" onfocus="this.placeholder=''" />
<input type="text" class="three-lines" name="position_1" placeholder="Position" onblur="this.placeholder='Position'" onfocus="this.placeholder=''" />
<input type="text" class="three-lines" name="years_1" />
<input type="button" name="myButton" onclick="addJob()" value="+" />
</div>
也許是因爲你沒有發送一個參數來移除工作? – Lidaranis
在編輯器中使用'<>'按鈕添加一個片段。修復在控制檯顯示的錯誤 - 它缺少的東西:'removeJob(this)' – mplungjan
我已經更新了我的答案... –