目次
自分流に
今回は、指定の ID 名、クラス名を持った HTML 要素が存在しているかどうかの判定を JavaScript で行う内容になっています。
自分流の方法ですので、大きく間違っているかも知れませんが良ければご覧ください。
サンプル
以下の URL にサンプルページを作成してみました。
- 指定の ID 名、クラス名を持った HTML 要素の存在判定
- https://pulogu.net/wordpress/wp-content/uploads/2023/10/id-name-and-class-name-existence-determination.html
サンプルページのソースコードは以下の内容になっています。 div 要素に ID 名とクラス名を設定してあります。
HTML :
<div id="a">id = a</div> <div id="a">id = a</div> <div class="b">class = b</div> <div class="c">class = c</div> <div class="c">class = c</div>
ID の存在判定
以下の JavaScript をウェブブラウザ「Mozilla Firefox」の開発ツールの「コンソール」タブで実行してみたいと思います。サンプルページ上で実行してみます。
function test(){ //コンソールの内容消去 console.clear(); //変数宣言のみ let a; console.log(typeof a);//undefined console.log(a);//undefined console.log (a==undefined);//true console.log (a===undefined);//true console.log (a!=undefined);//false console.log (a!==undefined);//false //存在しない ID a=document.getElementById("aa");//存在しない ID console.log(typeof a);//object console.log(a);//null console.log (a==null);//true console.log (a===null);//true console.log (a!=null);//false console.log (a!==null);//false //存在する ID a=document.getElementById("a");//存在する ID console.log(typeof a);//object console.log(a);//オブジェクトが出力される console.log(a.toString());//[object HTMLDivElement] console.log (typeof a=="object");//true console.log (a!=undefined);//true console.log (a!=null);//true console.log (typeof a=="object"&&a!=undefined&&a!=null);//true //背景色を「赤」に設定 a.style.backgroundColor="red"; } test();
実行結果は以下の画像のようになりました。同じ ID が 2 つある場合、最初の要素が取得されるようですね。
class の存在判定
以下の JavaScript をコンソールで実行してみます。 getElementById は単一の要素を取得出来ましたが、 getElementsByClassName は複数の要素を取得出来るようです。
function test2(){ //コンソールの内容消去 console.clear(); //変数宣言のみ let a; console.log(typeof a);//undefined console.log(a);//undefined console.log (a==undefined);//true console.log (a===undefined);//true console.log (a!=undefined);//false console.log (a!==undefined);//false //存在しないクラス名 a=document.getElementsByClassName("bb");//存在しないクラス名 console.log(typeof a);//object console.log(a);//オブジェクトが出力される console.log(a.length);//0 console.log(a.toString());//[object HTMLCollection] console.log(a==undefined);//false console.log(a==null);//false //存在するクラス名 a=document.getElementsByClassName("b");//存在するクラス名 console.log(a);//オブジェクトが出力される console.log(a.length);//1 console.log(a.toString());//[object HTMLCollection] console.log(a==undefined);//false console.log(a==null);//false console.log(a.length>0&&typeof a=="object"&&a!=undefined&&a!=null);//true
//背景色を「赤」に設定 a[0].style.backgroundColor="red"; } test2();
class=c の色を変える
class=c は要素が 2 つあるので、 .length の結果が 2 となるようです。
function test3(){ //コンソールの内容消去 console.clear(); //存在するクラス名 let a=document.getElementsByClassName("c");//存在するクラス名 console.log(a);//オブジェクトが出力される console.log(a.length);//2 console.log(a.toString());//[object HTMLCollection] console.log(a==undefined);//false console.log(a==null);//false console.log(a.length>0&&typeof a=="object"&&a!=undefined&&a!=null);//true
//背景色を「赤」に設定 for(let b=0;b<a.length;b++){ a[b].style.backgroundColor="red"; } } test3();
実行結果は以下のようになりました。
コンソールにオブジェクトが出力されています。
テスト環境
- Mozilla Firefox 119.0
- Windos10(64 ビット)
以上、閲覧ありがとうございました。
- [ Amazon.co.jp アソシエイト ] JavaScript 関係の本
- https://amzn.to/48EoeGM