javascript - 如何简化代码 - 单击某个按钮时添加新的输入和按钮
问题描述
单击按钮时,我正在尝试添加新的输入文本和按钮。
但我认为我确实做了硬编码......
我想知道是否有办法简化这种硬编码。
特别是功能add_reference
。
function add_reference() {
var newGroupDiv = document.createElement('div');
newGroupDiv.className = "form-group row mb-1 new-reference";
var newColFirst = document.createElement('div');
newColFirst.className = "col-sm-3";
var newColSecond = document.createElement('div');
newColSecond.className = "col-sm-9 input-group";
var newInput = document.createElement('input');
newInput.setAttribute('type', 'text');
newInput.className = "form-control mr-2 reference-input";
var newButtonDiv = document.createElement('div');
newButtonDiv.className = "input-group-append";
var newButton = document.createElement('button');
newButton.setAttribute('type', 'button');
newButton.className = "btn btn-block btn-ref btn-outline-info float-right";
var newButtonIcon = document.createElement('i');
newButtonIcon.className = "mdi mdi-plus-circle";
newButton.appendChild(newButtonIcon);
newButtonDiv.appendChild(newButton);
newColSecond.appendChild(newInput);
newColSecond.appendChild(newButtonDiv);
newGroupDiv.appendChild(newColFirst);
newGroupDiv.appendChild(newColSecond);
return newGroupDiv;
};
newGroupDiv = add_reference();
$('.form-fieldset').append(newGroupDiv);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<fieldset class="form-fieldset">
<div class="form-group row mb-1">
<label class="col-sm-3 text-left control-label col-form-label" for="reference">REF</label>
<div class="col-sm-9 input-group">
<input class="form-control mr-2 reference-input-first reference-input" id="reference" name="reference" required type="text" value="">
<div class="input-group-append">
<button type="button" class="btn btn-block btn-outline-info btn-ref-first float-right"><i class="mdi mdi-plus-circle"></i></button>
</div>
</div>
</div>
</fieldset>
解决方案
使用克隆
$('.form-fieldset').append($(".form-fieldset>div").clone(true));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<fieldset class="form-fieldset">
<div class="form-group row mb-1">
<label class="col-sm-3 text-left control-label col-form-label" for="reference">참조</label>
<div class="col-sm-9 input-group">
<input class="form-control mr-2 reference-input-first reference-input" id="reference" name="reference" required type="text" value="">
<div class="input-group-append">
<button type="button" class="btn btn-block btn-outline-info btn-ref-first float-right"><i class="mdi mdi-plus-circle"></i></button>
</div>
</div>
</div>
</fieldset>
推荐阅读
- symfony - 使用 array_values AND 运算符的成员
- c# - CS0535 C# 没有实现接口成员
- elasticsearch - 找出在弹性搜索中哪个查询应该返回 true
- python - 如何计算一个数据框中的分类出现次数并映射到另一个?
- selenium - webdriver.io afterscenario 关闭浏览器现在工作
- html - 使 3 个 div 浮动并在 33% 宽度 5% 填充处水平对齐
- sql - Sequelize 过滤器嵌套包括
- python - Sklearn 拟合线性回归
- react-native - 如何在 Android 上使用 React Native 实现组件高度的平滑动画
- alfresco - 如何将自定义按钮添加到 Alfresco 共享页面正文?