3

我了解如何动态加载 HTML,但我无法理解如何加载、分配和跟踪加载中的元素的 ID div

这是我的主要街区

<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 的解决方案。在进入框架之前,我正在尝试使用原生 JavaScript。

我确信可能已经有问题或博客或其他内容,但我只是不知道要搜索的最佳关键字。每当我在搜索关键字中使用“动态加载 HTML”时,我得到的只是 AJAX 教程结果。

提前感谢您的帮助!

4

2 回答 2

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 解决方案,请参见此处。一旦有了索引,获取表单数据就像使用索引根据 ID 进行查询一样简单。

于 2013-05-08T20:23:58.840 回答
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);
}
于 2013-05-08T20:23:09.007 回答