2013-06-27 144 views
4

我需要這樣的東西。如何使用JavaScript刪除下一個元素(不使用jQuery)

<a onclick="SaveNote(this);" >Save</a> 
<a href="javascript:void(0);" id="112">Cancel</a> 
<a href="javascript:void(0);" id="112">Delete</a> 

如果我點擊Save錨,我想刪除所有三個錨元素,如上圖所示,在不使用任何id,並用Edit錨替換它們。我目前有一些Javascript代碼,看起來像這樣:

function SaveNote(e){ 
    e.nextSibling.removeNode; 
    e.nextSibling.removeNode; 
    e.nextSibling.removeNode; 
} 

你有關於這個問題的任何想法?

+0

removeNode拼寫錯誤,它應該是removeNode(),因爲它是一個函數 –

回答

1

你可以做這樣的事情

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); 

jsfiddle

注:這需要支持的addEventListener這是很容易處理

+0

謝謝,但我們還需要刪除「保存」按鈕,並添加另一個按鈕,如「編輯」 – aman

+0

這是很容易添加到'saveNote',但不是在你原來的問題。 – Xotic750

+0

是的,我知道,但我們需要這個 謝謝 – aman

10

removeNode似乎是非標準的。試試這個:

if(e && e.nextSibling) { 
    e.parentNode.removeChild(e.nextSibling) 
} 
2

而不是reomveNode嘗試removeNode();

+0

謝謝,拼寫固定,但仍然不工作 – aman

+0

感謝大家爲我的問題花費寶貴的時間。 (e && e.nextSibling){e.parentNode.removeChild(e.nextSibling);(e && e.nextSibling){e.parentNode.removeChild(e.nextSibling);(e && e.nextSibling){e1。 } e.parentNode.removeChild(e); – aman

2

我想做的事情與提到的這個問題一樣,但沒有引用父節點。一些谷歌搜索後,這是我發現!

看起來好像有一個函數可以讓你在不引用父節點的情況下執行此操作;它被稱爲remove();

這是演示。

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>

請發表評論,如果這個答案可以得到改善。

+0

它像IE瀏覽器不支持它看到[MDN](https://developer.mozilla.org/en-US/docs/Web/API/ChildNode/remove) –