首页 > 解决方案 > 如何在循环中或为每个数组元素使用 .clone()?

问题描述

出于某种原因,我必须修改用于创建发票的软件模板。发票是用 html 生成的,因此,我认为我可以使用 Stylish 和 Grease Monkey 来做到这一点(没有开发人员的支持,所以我必须自己做)。基本上我有一些没有 id 的 div 元素和表。我已经为每个元素生成了唯一的 id(这部分代码有效),我现在需要的是克隆“#order-”+index+“-details”并将其添加到“#order”+index+“lines”其中索引“ #order-"+index+"-details" 匹配 "#order"+index+"lines"(这部分没有)。我知道代码既业余又丑陋,但它不一定要高效——它必须有效;)。

var orders=document.querySelectorAll("div.pages");
    for(var i = 0; i < orders.length; i++){

$("body").find("div.pages").each(function(index){
$(this).attr("id","order-"+index+"-page");
})

$("body").find("div.pages > div:nth-child(1) > table:nth- 
child(3)").each(function(index){
$(this).attr("id","order-"+index+"-details");
})

$("body").find("div.pages > div:nth-child(1) > table:nth- 
child(7)").each(function(index){
$(this).attr("id","order-"+index+"-lines");
})

$order_details = $("#order-"+index+"-details").clone();
$("#order"+index+"lines").prepend($order_details);

}

这部分不起作用

$order_details = $("#order-"+index+"-details").clone();
$("#order-"+index+"-lines").prepend($order_details);

它在我尝试时有效:

$order_details = $("#order-1-details").clone();
$("#order-1-lines").prepend($order_details);

$order_details = $("#order-2-details").clone();
$("#order-2-lines").prepend($order_details);

但我需要循环它。非常感谢您的所有建议。

问候,托马斯。

标签: javascriptjqueryhtml

解决方案


$order_details = $("#order-"+index+"-details").clone();
$("#order"+index+"lines").prepend($order_details);

应该

$order_details = $("#order-"+i+"-details").clone();
$("#order"+i+"lines").prepend($order_details);

如果代码被格式化,那就更清楚了:

var orders = document.querySelectorAll("div.pages");
for (var i = 0; i < orders.length; i++) {

    $("body").find("div.pages").each(function(index) {
        $(this).attr("id","order-"+index+"-page");
    });

    $("body").find("div.pages > div:nth-child(1) > table:nth- 
    child(3)").each(function(index){
        $(this).attr("id","order-"+index+"-details");
    });

    $("body").find("div.pages > div:nth-child(1) > table:nth- 
    child(7)").each(function(index){
        $(this).attr("id","order-"+index+"-lines");
    });

    $order_details = $("#order-"+i+"-details").clone();
    $("#order"+i+"lines").prepend($order_details);

}

推荐阅读