You can do it by using this
and previousElementSibling
twice (but keep reading):
function deleteHandler() {
var br = this.previousElementSibling;
var input = br.previousElementSibling;
var parent = this.parentElement;
parent.removeChild(this);
parent.removeChild(br);
parent.removeChild(input);
}
then
newDeleteButton.addEventListener("click", deleteHandler);
Live Example:
document.getElementById("add").addEventListener("click", addNewField, false);
function addNewField()
{
var newTextField = document.createElement('input');
newTextField.type = 'text';
newTextField.name = 'textInput';
var newDeleteButton = document.createElement('input');
newDeleteButton.type = 'button';
newDeleteButton.value = "Delete";
newDeleteButton.name = 'deleteTextInput';
newDeleteButton.addEventListener("click", deleteHandler);
var newLine = document.createElement('br');
document.getElementById('inputs').appendChild(newTextField);
document.getElementById('inputs').appendChild(newDeleteButton);
document.getElementById('inputs').appendChild(newLine);
}
function deleteHandler() {
var br = this.previousElementSibling;
var input = br.previousElementSibling;
var parent = this.parentElement;
parent.removeChild(this);
parent.removeChild(br);
parent.removeChild(input);
}
<div id="inputs"></div>
<input type="button" id="add" value="Add">
But, I wouldn't; it's fragile. Instead, I'd get rid of the br
and put both the text and button in a div
, then just remove the div:
function deleteHandler() {
var br = this.previousElementSibling;
var input = br.previousElementSibling;
var parent = this.parentElement;
parent.removeChild(this);
parent.removeChild(br);
parent.removeChild(input);
}
then
newDeleteButton.addEventListener("click", deleteHandler);
Live Example:
document.getElementById("add").addEventListener("click", addNewField, false);
function addNewField()
{
// *** Div to contain them
var div = document.createElement("div");
var newTextField = document.createElement('input');
newTextField.type = 'text';
newTextField.name = 'textInput';
var newDeleteButton = document.createElement('input');
newDeleteButton.type = 'button';
newDeleteButton.value = "Delete";
newDeleteButton.name = 'deleteTextInput';
newDeleteButton.addEventListener("click", deleteHandler);
// *** Put them in the div
div.appendChild(newTextField);
div.appendChild(newDeleteButton);
// *** Add the div
document.getElementById('inputs').appendChild(div);
}
function deleteHandler() {
var parent = this.parentElement;
parent.parentElement.removeChild(parent);
}
<div id="inputs"></div>
<input type="button" id="add" value="Add">