[解決済み] Javascriptを使用してHTML要素を削除するには?
質問事項
全くの初心者です。jQueryではなく、オリジナルのJavascriptを使用してHTML要素を削除する方法を誰か教えてください。
index.html
<html>
<head>
<script type="text/javascript" src="myscripts.js" > </script>
<style>
#dummy {
min-width: 200px;
min-height: 200px;
max-width: 200px;
max-height: 200px;
background-color: #fff000;
}
</style>
</head>
<body>
<div id="dummy"></div>
<form>
<input type="submit" value="Remove DUMMY" onclick="removeDummy(); "/>
</form>
</body>
myscripts.js
function removeDummy() {
var elem = document.getElementById('dummy');
elem.parentNode.removeChild(elem);
}
送信ボタンをクリックするとどうなるかというと、ごくごく短い時間だけ消えて、すぐにまた表示されるのです。ボタンをクリックしたときに、その要素を完全に削除したいのです。
どのように解決するのですか?
何が起こっているかというと、フォームが送信され、ページが(元の内容で)リフレッシュされているのです。あなたは
click
イベントを送信します。
要素を削除したい場合や
ではなく
を処理し、フォームを送信します。
submit
イベントを返し、代わりに
false
をハンドラから取得します。
HTMLです。
<form onsubmit="return removeDummy(); ">
<input type="submit" value="Remove DUMMY"/>
</form>
JavaScriptです。
function removeDummy() {
var elem = document.getElementById('dummy');
elem.parentNode.removeChild(elem);
return false;
}
しかし、ダミーの div を削除することだけが目的であれば、そのためのフォームはまったく必要ありません (あるいは必要ありません)。その代わりに
HTMLです。
<input type="button" value="Remove DUMMY" onclick="removeDummy()" />
JavaScriptです。
function removeDummy() {
var elem = document.getElementById('dummy');
elem.parentNode.removeChild(elem);
return false;
}
しかし
そのようなイベントハンドラの設定方法は古いのです。JavaScriptのコードが独自のファイルにあるなど、勘がいいようですね。次のステップとしては、さらに踏み込んで
onXYZ
属性はイベントハンドラのフックに使用されます。その代わりに、あなたのJavaScriptでは、より新しい(2000年頃の)方法でイベントハンドラをフックすることができます。
HTMLを使用します。
<input id='btnRemoveDummy' type="button" value="Remove DUMMY"/>
JavaScriptです。
function removeDummy() {
var elem = document.getElementById('dummy');
elem.parentNode.removeChild(elem);
return false;
}
function pageInit() {
// Hook up the "remove dummy" button
var btn = document.getElementById('btnRemoveDummy');
if (btn.addEventListener) {
// DOM2 standard
btn.addEventListener('click', removeDummy, false);
}
else if (btn.attachEvent) {
// IE (IE9 finally supports the above, though)
btn.attachEvent('onclick', removeDummy);
}
else {
// Really old or non-standard browser, try DOM0
btn.onclick = removeDummy;
}
}
...そして
pageInit();
から
script
タグをページ末尾に配置します。
body
(の直前)。
</body>
タグ)、または
window
load
イベントが発生しますが
かなり遅い
はページロードのサイクルに含まれるため、通常はイベントハンドラをフックするのに適していません (これは
後
は、例えば、すべての画像が最終的にロードされました)。
ブラウザの違いに対応するために、いくつかの処理を入れなければならないことに注意してほしい。おそらく、イベントをフックするための関数があれば、毎回そのロジックを繰り返す必要はないだろう。あるいは、以下のようなライブラリの使用を検討してください。
jQuery
,
プロトタイプ
,
YUI
,
クロージャ
または
その他
を使えば、ブラウザの違いもスムーズに解決できます。それは
非常に重要
しかし、ライブラリは多くの不整合を処理し、また多くの便利なユーティリティを提供します - ブラウザの違いを処理するイベントハンドラをフックする手段などです。また、ほとんどのライブラリは関数(例えば
pageInit
のずっと前に、DOM を操作できるようになったらすぐに実行されるようにします。
window
load
が発射されます。
関連
-
[解決済み】JavaScriptのinnerHTMLで要素が更新されない
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] 要素を水平方向にセンタリングする方法
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み】なぜHTMLは "chucknorris "を色と見なすのか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Facebook Graph API のクエリで with=location を使用すると "Uncaught (in promise) undefined" というエラーが発生する。
-
[解決済み】React Js: Uncaught (in promise) SyntaxError: 位置 0 の JSON で予期しないトークン < が発生しました。
-
[解決済み】Angular JS Uncaught Error。[インジェクター:モジュラー]。
-
[解決済み】JavaScriptのinnerHTMLで要素が更新されない
-
[解決済み】getElementByIdはnullを返す?[クローズド]
-
[解決済み】エラー:リスン EACCES 0.0.0.0:80 OSx Node.js
-
[解決済み】 Uncaught Error: Invariant Violation: 解決済み】 Uncaught Error: Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function but got: object.
-
[解決済み】JS ファイルが net::ERR_ABORTED 404 (Not Found) を取得する)
-
[解決済み】DOMException: サポートされているソースが見つからなかったため、読み込みに失敗しました。
-
[解決済み] JavaScript の連想配列からオブジェクトを削除するにはどうすればよいですか?