0
1

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 3 years have passed since last update.

【JavaScript】DocumentFragmentオブジェクトで一括で要素を追加する

Posted at

DocumentFragmentオブジェクトはDOMのツリー構造をシンプルに作成することが出来ます。
例を挙げると、

    タグの子要素
  • タグを動的に追加したい場合に有効です。

    実際にFragmentオブジェクトを使ってliタグに値を追加するシンプルな例を作成しました。

    sample.html
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
    <!--個別のファイル-->
    <link rel="stylesheet" href="./css/style.css" />
    <script type="text/javascript" src="./js/sample.js"></script>
    <title>Sample App</title>
    </head>
    <body>
        <div class="container">
            <div class="row">
                <div class="col-12">
                    <p class="lead">createDocumentFragmentを使ったサンプル</p>
                    <ul id="shopinfo">
                    <li id="list1">リスト1</li>
                    <li id="list2">リスト2</li>
                    </ul>
    
                    <button class="btn btn-success" id="addBtn">追加</button>
                </div>
            </div>
        </div>
    </body>
    </html>
    
    sample.js
    
    //ページロード時に実行されるイベントリスナー"DOMContentLoaded"を登録する。
    document.addEventListener('DOMContentLoaded',function(){
        
        //idをキーに要素を取得する。
        let btnId = document.getElementById('addBtn');
        
        //ID=btnIdが付与されたボタンにクリックイベントを登録する。
        btnId.addEventListener('click',(e)=>{
            
            //DocumentFragmentオブジェクトを作成する。
            let fragment = document.createDocumentFragment();
            
            //liタグを新規作成する。
            let child1 = document.createElement('li');
            
            //liタグに値「リスト3」を入れる。
            child1.append(document.createTextNode('リスト3'));
    
            let child2 = document.createElement('li');
            
            //liタグに値「リスト4」を入れる。
            child2.append(document.createTextNode('リスト4'));
    
            //fragment要素に値をそれぞれ追加する。
            fragment.append(child1);
            fragment.append(child2);
    
            //親要素Uiタグを特定する。
            let parentnodeUi = document.getElementById('shopinfo');
            
            //Uiタグにfragment要素を格納する。
            parentnodeUi.append(fragment);
        },false);
    },false);
    

    ボタンをクリックすると...
    (before)
    1.png

    (after)
    2.png

    こんな感じになります。

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?