4

私はこのようなものが必要です。

<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上に示すように、を使用せずに 3 つのアンカー要素をすべて削除し、idそれらをアンカーに置き換えますEdit。私は現在、次のようなJavascriptコードをいくつか持っています:

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

この問題について何か考えはありますか?

4

4 に答える 4

11

removeNode非標準のようです。これを試して:

if(e && e.nextSibling) {
  e.parentNode.removeChild(e.nextSibling)
}
于 2013-06-27T11:23:44.410 に答える
4

親ノードを参照せずに、この質問が言及したのと同じことをしたいと思っていました。いくつかのグーグルの後、これが私が見つけたものです!

親ノードを参照せずにこれを実行できる関数が実際にあるようです。と呼ばれ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>

この回答を改善できる場合は、コメントを投稿してください。

于 2015-12-20T21:14:22.277 に答える
2

reomveNode試してみる代わりにremoveNode();

于 2013-06-27T11:24:52.097 に答える
2

あなたはこのようなことをすることができます

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には、簡単に処理できるサポートが必要です

于 2013-06-27T11:55:28.823 に答える