我了解如何动态加载HTML,我无法理解如何加载它,分配和跟踪加载的div
内元素的ID。
这是我的主要栏目
<div id="add-equip-container">
<div id="add-equip-content">
</div>
<button id="add-equipment">Add More Equipment</button>
<button id="submit-equipment">Submit Equipment</button>
</div>
现在,每次点击add-equipment
时,我都想将以下块加载到add-equip-content
。
<div class="add-equip-form">
<input id="?" type="text" placeholder="Equipment Description..."/></br>
<input id="?" type="text" placeholder="Equipment Number"/></br>
<input id="?" type="text" placeholder="Other Stuff..."/></br>
</div>
每个块都将插入前一个加载的下方。我不知道如何分配和跟踪将在此操作期间抛出的各种ID。我想要一个不涉及jQuery的解决方案。在进入框架之前,我正试图利用vanilla JavaScript。
我确信可能存在问题或博客或其他内容,但我不知道要搜索的最佳关键字。每当我在搜索关键字中使用“动态加载HTML”时,我得到的就是AJAX Tutorial结果。
提前感谢您的帮助!
答案 0 :(得分:2)
一个解决方案实际上并不是加载HTML,而是通过Javascript创建它。这对您的情况很有用,因为您要向页面添加相同的代码,只有不同的ID。我会写一个这样的函数:
var form_index = 0;
//elem is the element you are appending to.
function addForm(elem) {
//create the container
var form_container = document.createElement("div");
form_container.className = "add-equip-form";
//description input
var desc = document.createElement('input');
desc.id = "equip-desc-" + form_index;
desc.type = "text";
desc.placeholder = "Equipment Description...";
//Equipment number input
var num = document.createElement('input');
num.id = "equip-num-" + form_index;
num.type = "text";
num.placeholder = "Equipment Number";
//Other
var other = document.createElement('input');
other.id = "equip-other-" + form_index;
other.type = "text";
desc.placeholder = "Other Stuff...";
//append inputs
form_container.appendChild(desc);
form_container.appendChild(num);
form_container.appendChild(other);
//append form
elem.appendChild(form_container);
form_index++;
}
然后,要访问您创建的ID,您需要知道的是您的父元素中包含div的索引。有关JavaScript解决方案,请参阅here。获得索引后,获取表单数据就像使用索引根据ID进行查询一样简单。
答案 1 :(得分:1)
这应该这样做。如果您不需要在数组中引用这些元素,则可能需要也可能不需要执行elements.push(content)。可以改为迭代一个计数器。
var add_equip_content = document.getElementById('add-equip-content'),
add_equip_btn = document.getElementById('add-equipment'),
elements = [];
add_equip_btn.addEventListener('click', addEquipment, true);
function addEquipment(event){
var content = document.createElement('div'),
html = '';
content.className = 'add-equip-form';
html += '<input id="equip_' + elements.length + '" type="text" placeholder="Equipment Description..."/></br>';
html += '<input id="equip_' + elements.length + '" type="text" placeholder="Equipment Number"/></br>';
html += '<input id="equip_' + elements.length + '" type="text" placeholder="Other Stuff..."/></br>';
content.innerHTML = html;
add_equip_content.appendChild(content);
elements.push(content);
}