如何在循环中或为每个数组元素使用.clone()?

时间:2019-05-26 20:27:43

标签: javascript jquery html

由于某些原因,我必须修改用于创建发票的软件的模板。发票是用html生成的,因此,我认为我可以使用“时尚”和“油脂猴子”来做到这一点(开发人员不提供支持,所以我必须自己做)。 基本上我有一些没有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);

但是我需要循环播放。预先非常感谢您的所有建议。

关于, 托马斯。

1 个答案:

答案 0 :(得分:1)

$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);

}