Javascript jQuery克隆一次更改中断

Javascript jQuery克隆一次更改中断,javascript,jquery,Javascript,Jquery,我有一个表,我想要一个“添加行”函数。我要做的是,当按下按钮时,行被克隆,然后被显示,id、表单元素的名称和onchange事件被更改。除了onchange函数外,所有这些都可以工作。因此,假设有3行(id为1、2和3),当对第2行进行更改时,第3行被传递给处理程序,而不是2行 以下是脚本: function addRow(){ count = parseInt($("#hidden_count").val()) count++ $("#hidden_count

我有一个表,我想要一个“添加行”函数。我要做的是,当按下按钮时,行被克隆,然后被显示,id、表单元素的名称和onchange事件被更改。除了onchange函数外,所有这些都可以工作。因此,假设有3行(id为1、2和3),当对第2行进行更改时,第3行被传递给处理程序,而不是2行

以下是脚本:

function addRow(){
    count = parseInt($("#hidden_count").val())
    count++     
    $("#hidden_count").val(count)       

    var row = $("#add_box").prev().clone()
    row.attr("id", "row_" + count)
    row.children().each(function(index, elem){
        if(elem.id.indexOf("delete_col_") != -1){
            elem.id = "delete_col_" + count
            $(elem).empty()
            $(elem).append("<div class='table-row-delete' onclick='deleteRow("+count+")'></div>");
        }else{
            $(elem).children().each(function(index, elem){
                if(typeof elem.name != 'undefined'){
                    if(elem.name.indexOf("exhaust_filter_num") != -1){
                        elem.name = "sheet[exhaust_filter_num_" + count + "]"
                        elem.value = parseInt(elem.value) + 1
                    }else if(elem.name.indexOf("exhaust_filter_size") != -1){
                        elem.name = "sheet[exhaust_filter_size_" + count + "]"  
                        elem.id = "exhaust_filter_size_" + count
                        elem.onchange = function() { calculateRow(count) }
                    }else if(elem.name.indexOf("exhaust_velocity") != -1){
                        elem.name = "sheet[exhaust_velocity_" + count + "]"                             
                        elem.id = "exhaust_velocity_" + count
                        elem.value = 0
                        elem.onchange = function() { calculateRow(count) }
                    }else if(elem.name.indexOf("exhaust_cfm") != -1){
                        elem.name = "sheet[exhaust_cfm" + "_" + count + "]"     
                        elem.id = "exhaust_cfm_" + count
                        elem.value = 0
                    }
                }
            })
        }
    })

    row.insertBefore("#add_box")
}
function calculateRow(id){
    var filter = $("#exhaust_filter_size_" + id).val()
    console.log("Calc row: " + id + ", " + filter)
    var velocity = parseInt($("#exhaust_velocity_" + id).val())
    var cfmElem = $("#exhaust_cfm_" + id)

    var cfm = velocity * filterData[filter].freeArea * filterData[filter].kFactor
    cfmElem.val(cfm)
}
函数addRow(){
count=parseInt($(“#hidden_count”).val()
计数++
$(“隐藏计数”).val(计数)
变量行=$(“#添加框”).prev().clone()
行属性(“id”、“行+计数”)
row.children().each(函数(索引,元素){
if(elem.id.indexOf(“删除列”)!=-1){
elem.id=“删除列”+计数
$(elem).empty()
$(elem)。追加(“”);
}否则{
$(elem).children().each(函数(索引,elem){
如果(元素名称的类型!=“未定义”){
如果(元素名称索引(“排气过滤器数量”)!=-1){
elem.name=“工作表[排气过滤器数量+计数+””
元素值=parseInt(元素值)+1
}else if(elem.name.indexOf(“排气过滤器尺寸”)!=-1){
elem.name=“工作表[排气过滤器尺寸+计数+””
elem.id=“排气过滤器尺寸”+计数
elem.onchange=function(){calculateRow(count)}
}else if(元素名称索引(“排气速度”)!=-1){
elem.name=“工作表[排气速度+计数+””
elem.id=“排气速度”+计数
元素值=0
elem.onchange=function(){calculateRow(count)}
}else if(elem.name.indexOf(“排气”)!=-1){
elem.name=“工作表[排气口计数+””
elem.id=“排气量”+计数
元素值=0
}
}
})
}
})
行。插入前(“#添加框”)
}
函数计算器OW(id){
var filter=$(“#排气#filter_usize_u”+id).val()
console.log(“计算行:“+id+”,“+filter”)
var-velocity=parseInt($(“#排气速度"+id).val())
var cfmElem=$(“#排气_cfm_u”+id)
var cfm=velocity*filterData[filter].freeArea*filterData[filter].kFactor
cfmElem.val(cfm)
}
原始html的布局如下(它很长,所以这是一个精简版本):


...

您需要使用
var
关键字将
count
设置为局部变量:

var count = parseInt($("#hidden_count").val());

谢谢你做到了!出于好奇,为什么会出现问题?即使count不是本地的,它是否应该在每次调用函数时被覆盖?
var count = parseInt($("#hidden_count").val());