javascript - Jquery克隆/删除 - 将元素添加到输出
问题描述
我在 div 及其元素上有克隆/删除功能。这部分工作正常,但我有一个生成代码按钮,我需要在生成新克隆的元素时输出它们的内容。
目前我有用于在页面上输出原始 div 元素的当前 javascript,但我想知道是否有一种方法可以根据 div 是否已被克隆或删除来动态附加输出。
var cloneIndex = $(".clonedInput").length;
function clone() {
$(this).parents(".clonedInput").clone()
.appendTo("body")
.attr("id", "clonedInput" + cloneIndex)
.on('click', 'button.clone', clone)
.on('click', 'button.remove', remove);
cloneIndex++;
}
function remove() {
$(this).parents(".clonedInput").remove();
}
$("button.clone").on("click", clone);
$("button.remove").on("click", remove);
/*generate the code*/
function myFunction() {
var quote = '"';
var mobile_start = "<pre><div class=" + quote + "show-for-small-only" + quote + "></pre>";
var inner_style = "<pre><hr style=" + quote + "color:#EEECE8; margin-left: 5px; margin-right: 5px;" + quote + "/></pre>";
var mobile_title = document.getElementById("title_text").value;
var headline = "<pre><p class=" + quote + "text-center" + quote + " style=" + quote + "background-color:" + document.getElementById("name_text").value + "; color: white; font-size:45px; font-family:din-bold; padding-top:15px; padding-bottom: 10px;" + quote + "></pre>" + mobile_title + "<pre></p></pre>";
var mobile_end = "<pre></div></pre>";
document.getElementById("top").innerHTML = mobile_start + inner_style + mobile_title + headline + mobile_end + "<br /><br />";
}
body {
padding: 10px;
}
.clonedInput {
width: 50%;
padding: 10px;
border-radius: 5px;
background-color: #def;
margin-bottom: 10px;
}
.clonedInput div {
margin: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="clonedInput" class="clonedInput">
<div>
<fieldset>
<legend>Product </legend>
<label for="name">Title:</label>
<input type="text" id="title_text" />
<label for="mail">Product Name:</label>
<input type="text" id="name_text" />
</fieldset>
</div>
<div class="actions">
<button class="clone">Clone</button>
<button class="remove">Remove</button>
</div>
</div>
<button onClick="myFunction()">Generate Code</button>
<p id="top" style="font-family:Arial; font-size: 18px;"></p>
解决方案
对字段使用类名而不是 ID。当您生成输出时,遍历每个clonedInput
并选择其子项中的字段,例如:
function myFunction() {
var code = "";
$(".clonedInput").each(function() {
var title=$(this).find(".title_text").val(),
productName=$(this).find(".name_text").val();
code += ....... //append the code for each element
});
$("#top").html(code);
}
提示:为您的函数、变量和元素名称使用适当的描述性名称。
推荐阅读
- javascript - 如何修复使用 firebase admin 检索文档时出现的以下错误?
- angularjs - angularjs中的多选下拉菜单仅适用于Controller的初始化
- php - 由于通过引用变量传递,获取为 foreach 提供的无效参数
- c - $HOME 时出现 getcwd 错误
- kotlin - 3次后如何设置Kotlin while循环停止?
- c++ - Void 值没有被忽略(试图将 void 分配给非 void 变量?)
- javascript - Winston Logger 可以用在前端进行日志记录吗?
- docker - 使用 Docker 运行 Jupyterhub 时连接重置
- javascript - 语法:针对不同状态属性的 React 中的 handleChange() 函数
- python - 将 tf.py_func 添加到梯度不工作的 Tensorflow 图