• 締切済み

JavaScriptでタグを含む要素が返ってくる

const base = document.getElementById('parent'); const children = base.children; console.log(children[0]); console.log(children[1]); console.log(children[2]); 下に記述したHTMLの<ul>の子要素を取得するために上記のように記述しました。この場合添付画像のようなタグを含めた要素が返ってきます。タグの中に書かれた内容を取得するにはtextContentを使えば良いようです。 初心者なもので、 <タグを含めた要素を取得してどんな使い道があるのでしょうか? 意味がよくわかりません。  使い慣れた方、これの使い道を教えてください。宜しくお願いいたします。 <ul id="parent"> <li id="first">1番目</li> <li id="second">2番目</li> <li id="third">3番目</li> </ul>

みんなの回答

回答No.1

> <タグを含めた要素を取得してどんな使い道があるのでしょうか? 例えば、入力枠が3個あったとします。 その中で、2番に入力してないときなどに、 class="error" (あくまで例)を継承させ、 例えば赤文字で「入力必須項目です」などと 表示をするタグそのもののアトリビュートをいじりたいことが ほとんどです。逆に、中の要素を取り出すことは、 あまり多くはなく、実際は、INPUTパーツなどの入力物を 取り出すことが多いですよ。 なぜなら、最初から書いてある文字はJSで取りに行かなくても、 最初からわかってることなので、取り込む意味がないからです。 表示後変化しないものは、最初からJSに埋め込んでしまえばいいので あまり活躍の場がないのですよ。

関連するQ&A

  • DOM の 要素の数え方について

    同じクラス名のついた、子要素の数え方を回答いただければと思います。 1. li タグ が 5つあるので、そのような出力にしたいのです。 2. 各 ul の li タグの数を出すには、どのようにすればよいのでしょうか ? どうぞ、皆様よろしくおねがいいたいします。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> </head> <body> <ul class="myClass"> <li>1</li> <li>2</li> </ul> <ul class="myClass"> <li>3</li> <li>4</li> <li>5</li> </ul> <script> try { var chiledNodes = []; function userFunc( parent ) { chiledNodes = document.querySelector( parent ).children; alert ( chiledNodes.length ); } } catch( e ) { alert( e ); } userFunc( '.myClass' ); </script> </body> </html>

  • タグ内にあるタグに影響させないイベントハンドラの使い方は?

    次のようなHTML文の部分があった場合に於いて、最外部に設置したイベントハンドラを、内部にあるタグに対して無効にするにはどうしたらよいのでしょうか? 具体的にはid="t1"なるul要素以外の内部の各要素上(liやa等)におけるonmouseoutを無効にするには、どうしたらよいのでしょうか? 最外部のul要素からマウスがoutした時だけ或るイベントを発生させ、かつul内部の各要素からマウスがoutされた時には、そのイベントを発生させないようにするにはどうしたらよいのでしょうか? <ul id="t1" onmouseover="func1()" onmouseout="func2()">  <li class="level1">なんたらかんたら   <ul id="t2">    <li class="level2">○○<a>△△</a></li>    <li class="level2">××<a>▽▽</a></li>   </ul>  </li>  <li class="level1">かんたらなんたら</li>  <li class="level1">・・・・・・・・</li> </ul>

  • タグを切り替えるJavaScriptについて

    下記のurlを参考にして、タグを切り替えるJavaScriptを使いレイアウトをしています。 http://archiva.jp/web/javascript/tab-menu.html やりたいことは各内容をIDセレクタでくくりたいのです。 <div id="page1">  <h2>page1</h2>  <p>パンクズ</p>  <div class="nav">   <ul id="tab">    <li><a href="#page1"><span>page1を選択中</span></a></li>    <li><a href="#page2"><span>page2</span></a></li>    <li><a href="#page3"><span>pave3</span></a></li>   </ul>  </div>  <p>段落1</p> </div> <div id="page2">  <h2>page2</h2>  <p>パンクズ</p>  <div class="nav">   <ul id="tab2">    <li><a href="#page1"><span>page1</span></a></li>    <li><a href="#page2"><span>page2を選択中</span></a></li>    <li><a href="#page3"><span>pave3</span></a></li>   </ul>  </div>  <p>段落1</p> </div> ...page3 このようにやりたいのですが、JavaScriptがIDセレクタの"tab"にしか対応していないため、他のページにいくとクリックが効かなくなってしまいます。 idセレクタをclassセレクタに設定し直してもidセレクタにしか対応していないため効きません。 tag2とtab3に対応させるためにはどのようにすればいいでしょうか。 よろしくお願いします。

  • タグ切り替えのJavaScriptについて

    タグを切り替えるJavaScriptと http://archiva.jp/web/javascript/tab-menu.html (参考サイト) ロールオーバーのJavaScript http://css-happylife.com/template/14/ (参考サイト) この2つを組み合わせようと思ったのですが、どうにもうまくいきません。 今記述しているままではロールオーバーで画像が切り替わりますが、選択しているタグが元の画像に戻ってしまいます。 詳しく説明すると、タグ切り替えのサンプルページでは、Page3を押すとPage3のタグの部分が黒く切り替わっていると思います。しかし、今の記述ではロールオーバーの時しか画像が変わらずマウスを外すと元に戻ってしまいます。 サンプルページではフォントとbackgroud-colorを使用して #tab li a:hover, #tab li.present a { border-color: #333; color: #000; } ここで適用していると思います。 しかし、私は画像を使って切り替えたいのです。 色々試してみたのですが、どうにもうまくいかないため投稿しました。 お力添えよろしくお願いします。 ↓現在の記述↓ <!------------html------------> <ul id="tab"> <li><a href="#page1"><img src="img/about_gnavi_what_off.gif"></a></li> <li><a href="#page2"><img src="img/about_gnavi_type_off.gif"></a></li> <li><a href="#page3"><img src="img/about_gnavi_tellme_off.gif"></a></li> </ul> <!------------css------------> ul#tab{ margin:0; padding:0; } ul#tab li{ float:left; display:inline; margin:8px 0 0 10px; }

    • ベストアンサー
    • CSS
  • 【JavaScript】DOMのノードの数え方

    以下のHTMLに対してその下のJavaScriptを記述しました。 コンソールについている番号をその下のHTMLに書き込んでみました。 ▶は改行、もしくはタブによる空白をあらわしています。 自分が学習した範囲(添付画像)だと、全ての<li>~<li>の後に改行やタブによる空白もカウントされるものと思っていました。 一番下に自分で書いてみた番号とNodeListの番号の対応は合っていますか? 1つ目、あるいは2つ目の</li>の後の改行やタブによる空白は含まれないのでしょうか? NodeListの一番最初と、一番最後は”text”になっていますが、これは改行を示しているのでしょうか? それともタブ等による空白を示しているのでしょうか? いずれにせよ最初と最後だけに"text"がついているのが腑に落ちません。 DOMのノードの数え方について初心者にも分かりやすいように教えていただけないでしょうか? よろしくお願いします。 (HTML) <ul> <li>item</li> <li>item</li> <li>item</li> </ul> (JavaScript) const ul = document.querySelector('ul'); const list = ul.childNodes; console.log(list); ---------------------------------------------------- (コンソール:結果) NodeList(7) [text, li, text, li, text, li, text] 0: text 1: li 2: text 3: li 4: text 5: li 6: text length: 7 __proto__: NodeList ↓↑ <ul> ▶(0)<li(1)>item1(2)</li> <li(3)>item2(4)</li> <li(5)>item3(6)</li>▶(7) </ul>

  • タグの長さを測定するには

    Webサイトのタグの長さを調べる方法はないでしょうか. たとえば,下のコードのliの要素の横幅を調べたりはできないものでしょうか. <ul> <li>aaaaa</li> <li>bb</li> </ul>

  • jQueryで複数あるUL要素の最後のLI要素以外を処理したい

    jQueryで複数あるUL要素の最後のLI要素以外を処理したい 現在、HTMLを <ul> <li>foo</li> <li>bar</li> <li>com</li> </ul> <ul> <li>foo</li> <li>bar</li> <li>com</li>(※) </ul> 上記のように記述しています。 今回、jQueryを使い、2カ所あるUL要素の最後のLI要素以外を処理したいと思い、 $(function(){ $("ul li:not(:last)").css("~","~"); }); 以上のようにjQueryを記述したところ、1カ所目の最後のLI要素は無視されCSSが追加されてしまいました。 1カ所目・2カ所目とも同じように処理するにはどうしたら良いでしょうか? ご指導・ご鞭撻のほど、よろしくお願いします。

    • ベストアンサー
    • AJAX
  • liタグを改列させたい。

    4番目のliタグは右の列に表示させたい。7番目のliタグはさらに右の列に表示させたい。 ↓のような感じが希望です。ul liタグでは無理でしょうか? 1 4 7 2 5 8 3 6 9

    • 締切済み
    • CSS
  • jquery 親要素以外の取得

    下記のような形で200をクリックしたら<li>に200を持つ<ul>以外の<ul>の色変えをしたいと思っています。 <button id="100">100</button> <button id="200">200</button> <button id="300">300</button> <div> <ul> <li>100</li><li>150</li> </ul> <ul> <li>200</li><li>250</li> </ul> <ul> <li>300</li><li>350</li> </ul> ・ ・ </div> このようなhtmlで200のボタンを押したとき<li>中身が200の<ul>はそのまま、他の<ul>を色変えする形です。 $('button#200').click(function(){ $('ul li').each(function(){ var siz = $(this).text(); if(siz == '200'){ $(this).parent().css('background','#ccc'); } }) }); 200を押したとき<li>200を含む<ul>を色変えはできましたが、それ以外を変える場合がわかりません。 どうかご教授お願いします。

  • JavaScript のTypeError

    Uncaught TypeError: Cannot read properties of null (reading 'appendChild') at add というエラーで困っています。 初心者向け動画 https://www.youtube.com/watch?v=E08jeQBa1D0 さんでそのままのコードを打ったつもりですが、「テキストボックスに文字を入れて、エンターを押すと値がリストに追加されていく」という動きができません。 コードはこちらです。(動画のままを打ったつもりです) [HTML] <body class="bg-light"> <div class="container w-75"> <h1 class="text-center text-info my-4"> todo</h1> <form id="form" class="mb-4"> <input type="text" id="input" placeholder="todoを入力" autocomplete="off" class="form-control"> </form> <ul class="list-group text-secondary"></ul> </div> <script src="index.js"></script> </body> [JS] const form = document.getElementById("form") const input = document.getElementById("input") const ul = document.getElementById("ul") form.addEventListener("submit", function (event) { event.preventDefault() console.log(input.value) add() }) function add() { const li = document.createElement("li") li.innerText = input.value li.classList.add("List-group-item") ul.appendChild(li) //ここでエラー input.value = "" } HTMLを生成するときにulがなくて追加できない、という意味であってるでしょうか。 何が原因なのか知りたいです。

専門家に質問してみよう