html要素を複製して追加する方法 – Javascript

もくじ

説明

テーブル要素を動的に作り、それをループの中で複製してdomに追加していきます

実行

こんな感じでテーブル要素が動的に増えるようにする

スクリーンショット 2018-01-10 2.17.07.png

実装

<html>
 <head>
<style type="text/css">
        table a:link {
    color: #666;
    font-weight: bold;
    text-decoration:none;
}
table a:visited {
    color: #999999;
    font-weight:bold;
    text-decoration:none;
}
table a:active,
table a:hover {
    color: #bd5a35;
    text-decoration:underline;
}
table {
    font-family:Arial, Helvetica, sans-serif;
    color:#666;
    font-size:12px;
    text-shadow: 1px 1px 0px #fff;
    background:#eaebec;
    margin:20px;
    border:#ccc 1px solid;

    -moz-border-radius:3px;
    -webkit-border-radius:3px;
    border-radius:3px;

    -moz-box-shadow: 0 1px 2px #d1d1d1;
    -webkit-box-shadow: 0 1px 2px #d1d1d1;
    box-shadow: 0 1px 2px #d1d1d1;
}
table th {
    padding:21px 25px 22px 25px;
    border-top:1px solid #fafafa;
    border-bottom:1px solid #e0e0e0;

    background: #ededed;
    background: -webkit-gradient(linear, left top, left bottom, from(#ededed), to(#ebebeb));
    background: -moz-linear-gradient(top,  #ededed,  #ebebeb);
}
table th:first-child {
    text-align: left;
    padding-left:20px;
}
table tr:first-child th:first-child {
    -moz-border-radius-topleft:3px;
    -webkit-border-top-left-radius:3px;
    border-top-left-radius:3px;
}
table tr:first-child th:last-child {
    -moz-border-radius-topright:3px;
    -webkit-border-top-right-radius:3px;
    border-top-right-radius:3px;
}
table tr {
    text-align: center;
    padding-left:20px;
}
table td:first-child {
    text-align: left;
    padding-left:20px;
    border-left: 0;
}
table td {
    padding:18px;
    border-top: 1px solid #ffffff;
    border-bottom:1px solid #e0e0e0;
    border-left: 1px solid #e0e0e0;

    background: #fafafa;
    background: -webkit-gradient(linear, left top, left bottom, from(#fbfbfb), to(#fafafa));
    background: -moz-linear-gradient(top,  #fbfbfb,  #fafafa);
}
table tr.even td {
    background: #f6f6f6;
    background: -webkit-gradient(linear, left top, left bottom, from(#f8f8f8), to(#f6f6f6));
    background: -moz-linear-gradient(top,  #f8f8f8,  #f6f6f6);
}
table tr:last-child td {
    border-bottom:0;
}
table tr:last-child td:first-child {
    -moz-border-radius-bottomleft:3px;
    -webkit-border-bottom-left-radius:3px;
    border-bottom-left-radius:3px;
}
table tr:last-child td:last-child {
    -moz-border-radius-bottomright:3px;
    -webkit-border-bottom-right-radius:3px;
    border-bottom-right-radius:3px;
}
table tr:hover td {
    background: #f2f2f2;
    background: -webkit-gradient(linear, left top, left bottom, from(#f2f2f2), to(#f0f0f0));
    background: -moz-linear-gradient(top,  #f2f2f2,  #f0f0f0);  
}

</style>
 </head>
  <body>
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<div id="roots">
 <div id="each_root">
  </div>
   </div>

<script language="JavaScript">
var count;
for (count = 0; count < 5; count++) {

    $("#each_root").clone().html
   (
      `<table cellspacing='0'>
        <thead>
            <tr>
                <th>名前</th>
                <th>年齢</th>
                <th>性別</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>${count}太郎</td>
                <td>${count}歳</td>
                <td>男</td>
            </tr>
        </tbody>
    </table>`
   ).appendTo("#roots");
}
</script>
</body>
</html>

増やしているとこと

html

<div id="roots">
 <div id="each_root">
 </div>
</div>

Javascript

var count;
for (count = 0; count < 5; count++) {

    $("#each_root").clone().html
   (
      `<table cellspacing='0'>
        <thead>
            <tr>
                <th>名前</th>
                <th>年齢</th>
                <th>性別</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>${count}太郎</td>
                <td>${count}歳</td>
                <td>男</td>
            </tr>
        </tbody>
    </table>`
   ).appendTo("#roots");
}

環境

  • html
  • css
  • javascript
  • jQuery

参考

Simple Little Table CSS3
ループと反復処理
jQuery 要素をコピーして追加し、IDを書き換える

藤沢瞭介(Ryosuke Hujisawa)
  • りょすけと申します。18歳からプログラミングをはじめ、今はフロントエンドでReactを書いたり、AIの勉強を頑張っています。off.tokyoでは、ハイテクやガジェット、それからプログラミングに関する情報まで、エンジニアに役立つ情報を日々発信しています!

未整理記事