I need something like this.
<a onclick="SaveNote(this);" >Save</a>
<a href="javascript:void(0);" id="112">Cancel</a>
<a href="javascript:void(0);" id="112">Delete</a>
If I click on the Save
anchor , I want to remove all three anchor elements as shown above, without using any id
, and replace them with an Edit
anchor. I currently have some Javascript code that looks something like this :
function SaveNote(e){
e.nextSibling.removeNode;
e.nextSibling.removeNode;
e.nextSibling.removeNode;
}
Have you any idea regarding this issue?
I need something like this.
<a onclick="SaveNote(this);" >Save</a>
<a href="javascript:void(0);" id="112">Cancel</a>
<a href="javascript:void(0);" id="112">Delete</a>
If I click on the Save
anchor , I want to remove all three anchor elements as shown above, without using any id
, and replace them with an Edit
anchor. I currently have some Javascript code that looks something like this :
function SaveNote(e){
e.nextSibling.removeNode;
e.nextSibling.removeNode;
e.nextSibling.removeNode;
}
Have you any idea regarding this issue?
Share Improve this question edited Jun 16, 2017 at 20:50 halfer 20.4k19 gold badges108 silver badges201 bronze badges asked Jun 27, 2013 at 11:20 amanaman 971 gold badge1 silver badge8 bronze badges 1- removeNode spelling is wrong and it should be removeNode() as it is a function – Parthik Gosar Commented Jun 27, 2013 at 11:22
4 Answers
Reset to default 11removeNode
seems to be non standard. Try this:
if(e && e.nextSibling) {
e.parentNode.removeChild(e.nextSibling)
}
I was wanting to do the same thing as this question mentioned but without referencing the parent node. After some googling this is what I found!
It appears as though there is actually a function that will let you do this without referencing the parent node; it is called remove();
.
Here is a demo.
function removeNextNode(elem) {
elem.nextElementSibling.remove();
}
a {
display: block;
}
<a onclick="removeNextNode(this);" href="#">Click to remove the next node...</a>
<a href="#">another node</a>
<a href="#">another node</a>
<a href="#">another node</a>
<a href="#">another node</a>
<a href="#">another node</a>
<a href="#">another node</a>
Please post a comment if this answer can be improved.
You could do something like this
HTML
<div>Stuff before</div>
<div>
<a id="save" href="#">Save</a>
<a id="cancel" href="#">Cancel</a>
<a id="delete" href="#">Delete</a>
</div>
<div>Stuff after</div>
Javascript
function emptyNode(node) {
while (node.firstChild) {
node.removeChild(node.firstChild);
}
}
function saveNote(e) {
var parent = e.target.parentNode,
edit = document.createElement("a");
emptyNode(parent);
edit.id = "edit";
edit.href = "#";
edit.appendChild(document.createTextNode("Edit"));
parent.appendChild(edit);
}
document.getElementById("save").addEventListener("click", saveNote, false);
On jsfiddle
Note: this requires support of addEventListener
which is easily dealt with
Instead of reomveNode
try removeNode();
.