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