0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JavaScriptを初めて学ぶ4

Posted at

DOM操作について学んでいく
DOM操作とは、今まで勉強したJavaScriptを使ってようやっとWebサイトを動的に置き換えていくこと
その前に必要な要素を学ぶ。

・getElementByIdメソッド
指定したidを持つ要素を一つゲットする→getElementById(id)
指定したidを持つ要素がなかったら、nullを返す。nullはオブジェクトが存在しないやつ

実際どんな感じで使われるのか。↓
まずはHTMLに

<body>
...
    <p id="sentence">お腹減った</p>
    <input id="button" type="button" value="eat!">

    <script src="main.js"></script>
</body>

bodyだけ書いたけど、とりあえず2つのidを。Webページ上では、「お腹減った」っていう文章と、「eat!」って言うボタンが表れてる。
次にJavaScript上で

const e = document.getElementById('button');  //定数e=document(HTML)からbuttonと言うidの要素をゲットする
e.addEventListener('click', () => { //これはゲットしたidの要素(button)をクリックしたら処理が実行されるやつ。event処理ともいう
    const sen = document.getElementById('sentence');  //定数sen=document(HTML)からbuttonと言うidの要素をゲットする
    console.log(sen.innerText);  //innerTextを入れることで、文章のみ表示される。入れなかったら<p>から入ってしまう
}, false);

と言う風に、ボタンを押したらconsole上に、お腹減ったと表示される機能完成。お腹減った。

・getElementsByTagNameメソッド
指定したタグ名を持つ要素をゲットする→document.getElementsByTagName(tageName)
戻り値は、HTML Collection(配列と似た構造のデータ)
指定したname属性が存在しない場合は空のHTMLCollection([])を返す。nullではない。

実際に

...
<body>
    <div>要素1-div</div>
    <p>要素2-p</p>
    <div>要素3-div</div>
    <span>要素4-span</span>
    <div>要素5-div</div>

    <input id="button" type="button" value="get!">

    <script src="main.js"></script>
</body>

が、htmlで、Javascriptでは↓

const e = document.getElementById('button');  //定数e=document(HTML)からbuttonと言うidの要素をゲットする
e.addEventListener('click', () => {   //これはゲットしたidの要素(button)をクリックしたら処理が実行されるやつ。event処理ともいう
    const elements = document.getElementsByTagName('div');  //定数elements=document(HTML)から「div」がつくタグをゲット
    for (let i =0; i < elements.length; i++) {  //divがある分だけループ
        console.log(elements[i].innerText);  //divを一つずつ出力
    }
}, false);

なんで急にfor構文が出てきたかというと、elementsの中には複数入る場合がある。
HTML Collectionと言う配列に似た構造のデータが入る。つまり、elementsに[0],[1],[2],[3],[4],[5]と入っている
して、このelementsに入っている要素、つまりdivタグ全てを一件ずつconsoleに出力するため、for構文が使われている。
結果、要素1-div、要素3-div、要素5-divが出力される

・getElementsByNameメソッド
指定したname属性を持つ要素をゲットする→document.getByName(name)
戻り値は、HTML Collection(配列と似た構造のデータ)
指定したname属性が存在しない場合は空のHTMLCollection([])を返す。nullではない。

実際に

<body>
...
    <input name="result" type="text">
    <input name="button" type="button" value="send!">

    <script src="main.js"></script>
</body>
</html>

がHTML。WEB上ではテキストボックスが表示され、その横にsend!のボタンが。

で、JavaScriptでは

const e = document.getElementById('button'); 
e.addEventListener('click', () => {   
    const elements = document.getElementsByName('result'); //定数elements=resultの要素ゲット
    console.log(elements[0].value);
}, false);

つまり、ボタンをクリックしたら、テキスト内(result)の文をゲットして、最後HTMLMCollectionから[0]を取り出す。[0]は一番目のやつ。今回は一個しかないので,[0]
.valueで文字を取り出す。これで、テキスト内の文章が表示される

・getElementsByClassName
指定したclass属性を持つ要素をゲット→document.getElementsByClassName(className)
戻り値は、HTML Collection(配列と似た構造のデータ)
指定したname属性が存在しない場合は空のHTMLCollection([])を返す。nullではない。
実際に

...
<body>
    <ul>
        <li class="wbc">要素1</li>
        <li class="otani">要素2</li>
        <li class="wbc">要素3</li>
        <li class="otani">要素4</li>
        <li class="wbc">要素5</li>
    </ul>
    <input id="button" type="button" value="get">
    <script src="main.js"></script>
</body>

とWEB上では、リストとボタンが表示

const e = document.getElementById('button'); 
e.addEventListener('click', () => {  
    const elements = document.getElementsByClassName(`wbc`);
    for(let i=0; i<elements.length; i++){
        console.log(elements[i].innerText);
    }
}, false);

と言う感じで、wbcクラスの要素1、要素3、要素5が出力される。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?