2017-10-17 12 views
0

私はそれを行う方法を知っていますが、vanilla JSでonClick要素(x)を含むボックスを削除したいと思います。 to thisによると、私は子要素を削除する必要があります。限り私の試みであるこのによう:vanilla js idボックスを削除する

function remove() { 
 
    var element = document.getElementById("box"); 
 
    element.parentNode.removeChild(element); 
 
}
#box { 
 
    background-color: lightgrey; 
 
    color: white; 
 
    width: 20em; 
 
    height: 20em; 
 
    border: 25px solid green; 
 
    padding: 25px; 
 
    margin: 25px; 
 
} 
 
.remover { 
 
    font-size: 10em; 
 
    align 
 
}
<div id="box"> 
 
    <div id="removeBox" onclick="remove()"> 
 
    <span class="remover">x</span> 
 
    </div> 
 
</div>

あなただけの「X」をクリックすると、全体のボックスを削除するために私を助けるために気にしませんか? jsfiddle

はどうもありがとうございます

+3

、スニペットはそのまま動作するようですか..? – Teemu

+0

スニペットは既にVanilla JSに入っていて、うまく動作します。どうしたの? –

+0

JSFiddleを使用するときは、JSセクションの透かしはウォーターマークではありません。それをクリックし、 'Load-Type'を' No Wrap - In body'として選択します。 – Rajesh

答えて

0

onclickを使用しないでください、それはここでは、悪い習慣だ理由は次のとおりです。

  • は、コードとマークアップをミックスし、このように書かれたコードがevalを
  • を通過
  • はグローバルスコープで実行され、直接書き込まれた関数はユーザースコープで実行されます
以下のように結合

使用イベント:ここ

document.getElementById("box").addEventListener('click', function() { 
    var element = document.getElementById("box"); 
    element.parentNode.removeChild(element); 
}); 

は全体フィドルです: コードと間違って何fiddle

+1

あなたの提案は正しいが、これは最適化であり、OPが求めている解決策ではない。また、これは複製です。それは詐欺に答える悪い習慣です。 – Rajesh

+0

彼のコードは既に働いているので解決策はありません。しかし、私はすべての質問の上でonclickを見て、人々は物事を行うためにそのくそった方法を知る必要があります。イベントはきれいで、すべてを1つの場所に保持し、グローバルにフックアップしないでください – DanteTheSmith

+0

トーンを気にしてください。私はそれを気にしませんが、それはまだ専門家ではないので、SOには適していません。 OPのコードが問題なく動作していれば、あなたの答えは最適化であり解決策ではないと言えます。また、HTML上でハンドラーを避ける重要な理由は、コードが壊れやすいためです。ページ上に表示されるので、誰でもコンソールでこの機能を無効にしてサイトを破壊することができます。また、コードをデバッグして盗むこともできます。 – Rajesh

関連する問題