これがjsfiddleです 。最初にスクリプトをそのまま試してから、最後の行にコメントを付け、その前の行のコメントを解除すると、必要な機能が得られますが、データが間違っているため、基本的にテンプレートを取得してデータを挿入します。ページ内の別の要素の前に挿入します。問題は、私が使用しているメソッドでは、オブジェクトまたはelementNodeを使用して挿入する必要があるのに、テンプレートをフェッチした後、エラーが発生するhtmlが残っていることです。
エラー:NOT_FOUND_ERR:DOM例外8
html:
<section class="container well">
<header></header>
<section id="section">
<h4 id="heading">heading 4</h4>
<div id="div_1" class="divs">
<a href="#">file_1.jpg</a>
<button class="btn btn-mini btn-danger pull-right">✖</button>
</div>
<div id="div_2" class="divs">
<a href="#">file_2.jpg</a>
<button class="btn btn-mini btn-danger pull-right">✖</button>
</div>
<div id="div_3" class="divs">
<a href="#">file_3.jpg</a>
<button class="btn btn-mini btn-danger pull-right">✖</button>
</div>
<div id="div_4" class="divs">
<a href="#">file_4.jpg</a>
<button class="btn btn-mini btn-danger pull-right">✖</button>
</div>
<div class="clearfix">
<button class="btn btn-primary pull-right add">
Add items
</button>
</div>
</section>
<footer></footer>
</section>
<script type="template" id="template">
<div id="{{id}}">
<a href="#">{{fileName}}</a>
</div>
</script>
私のJavaScriptコード:
$(document).on('click', '.add', function(e){
e.preventDefault();
e.stopPropagation();
target = document.getElementById($('.divs')[0].id);
template = document.querySelector('#template').innerHTML;
div = template
.replace(/{{id}}/g, '0')
.replace(/{{fileName}}/g, 'file_0');
//target.parentNode.insertBefore(document.createTextNode('AZERTY'), target);
target.parentNode.insertBefore(div, target);
});
jsfiddleをもう一度、よろしくお願いします。