質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

4883閲覧

Javascriptで要素が存在するかどうか知りたいです。

usawb

総合スコア26

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/12/08 17:31

###前提・実現したいこと

javascriptで取得したHTML要素があるかどうかを調べたいです。

###発生している問題・エラーメッセージ

Uncaught DOMException: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.

###該当のソースコード
HTML

<div id="frilis" class="frieria"> <ul> <li><span class="useimg"><img src="IMG/person.png"width=""height=""></span> <span class="myfname">Username</span> <span class="frimenu"> <img src="IMG/menu.png"width=""height=""> </span> </li> <li><span class="useimg"><img src="IMG/person.png"width=""height=""></span> <span class="myfname">Username</span> <span class="frimenu"> <img src="IMG/menu.png"width=""height=""> </span> </li> . . . . 同じ文の繰り返し </ul> </div>

JavaScript

var frilisimg = document.querySelectorAll("#frilis .useimg img"); for(var i =0;i<=frilisimg.length;i++){ (function(i){ frilisimg[i].addEventListener("click",function(){ showFriends(i); },false); })(i); } function showFriends(j){ var Farea_P = document.querySelectorAll("#frilis ul li"); var Farea2 = document.querySelector("#frilis ul li #f_area"); for(var i=0;i<Farea_P.length;i++){ if(!(i == j)){ if(ここにFarea2で取得した要素がある場合){ Farea_P[i].removeChild(Farea2); } } }
###試したこと if(Farea2 !== null) if(!!Farea2 ) などを試したのですが、Farea2がある場合もない場合もif文が実行され、removeChildで削除するノードが見つからず、実行できませんでした。というエラーが出てしまいます。 ###補足情報(言語/FW/ツール等のバージョンなど) 説明が下手くそですいません、困っているので、ぜひ教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

JavaScript

1var Farea2 = document.querySelector("#frilis ul li #f_area"); 2if ( Farea2 ) { 3 console.log( 'true' ); 4} else { 5 console.log( 'false' ); 6} 7```**動くサンプル:**[https://jsfiddle.net/vhgr5xf2/](https://jsfiddle.net/vhgr5xf2/)

投稿2016/12/08 17:41

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

usawb

2016/12/08 18:23

回答ありがとうございます。if(Farea2)でやってみたのですが、うまくいかなかったので、別の原因があるんだと思います。せっかく答えていただいたのに申し訳ありません。改めて原因が分かり次第もう一度投稿します!
kei344

2016/12/08 18:44 編集

よく見てなかった。分岐部分が問題なのではなくて、Farea2 に要素があるときに Farea_P にはいっている全ての要素に対して Farea_P[i].removeChild(Farea2); をしているので、 「あなたはうちの子ではありません」 と言われているのでは。たとえば、liが10個有って5個目のliに #f_area がある場合、4個目までのliではエラーが起きます。
kei344

2016/12/08 18:51

あと、#f_area が li要素の直下にないとどのみちエラーになりますね。 var Farea2 = document.querySelector("#frilis ul li > #f_area"); https://jsfiddle.net/vhgr5xf2/1/
usawb

2016/12/08 18:58

そういうことでしたか!わざわざありがとうございます。自分なりに解決策を考えてもう一度投稿してみたのですが、もしよろしければぜひ見ていただきたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問