问一个jquery为表单赋值的问题 同时如何把我现在写的代码稍微优化一下 50分悬赏高手请进 在线等

是这样的:目前有2个表格的数据,其中#temp_table是临时表,主要是从数据库查出来的数据,然后要赋值给#new_bzjh表格,因为表格里面含有合并行的,而且表格数据... 是这样的:目前有2个表格的数据,其中#temp_table是临时表,主要是从数据库查出来的数据,然后要赋值给#new_bzjh 表格,因为表格里面含有合并行的,而且表格数据很大,所以操作上会有些复杂
列举里面的new_bzjh表一个tr元素
<tr>
<td rowspan='14' id='qcl'>汽车连</td>
<td id="qcl_0">空勤车</td>
<td><input type="text" name="num" id="qcl_00"></td><!--是个文本输入框 只能输入数字-->
<td><input type="text" name="text" id="qcl_000"></td>
<td rowspan='14'><input type="text" id='qcl_shr'/></td>
<td rowspan='5' id='cwl'>场务连</td>
<td id="qcl_0">消防车</td>
<td><input type="text" name="num" id="cwl_00"></td>
<td><input type="text" name="text" id="cwl_000"></td>
<td rowspan='5'><input type="text" id='cwl_shr'/></td>
</tr>
我写的jquery函数
var num = $("#temp_table").find("tr").length+1;
var x= $('#temp_table tr:nth-child('+i+‘) td eq:(0)’);
for(var i=0;i<num;i++){
$("#new_bzjh tr td").filter(':contains('+x+')').each(function(){
var x1 = $('#temp_table tr:nth-child('+i+‘) td eq:(1)’);
var x2 = $('#temp_table tr:nth-child('+i+’) td eq:(2)‘);
var x3 = $('#temp_table tr:nth-child('+i+‘) td eq:(3)’);
$(this).next('td').html(x1);//我这里写的不对 直接改里面的html值了。 $(this).next('td').html()打印输出的是<input type="text" name="num" id="XX"/>的表单信息 我要给这个表单元素设置值 怎么改
$(this).next('td').next('td').html(x2);
var temp10 = $(this).next('td').next('td').next('td').html();
if(temp!=null&&temp10.indexOf('type')!=-1){
$(this).next('td').next('td').next('td').html(x3);
//这里主要考虑到下个元素可能为空或者未定义 所以加了判断
}
});
}
高手快来帮我一下 还有我写的效率太差了,怎么改一下优化一下
展开
 我来答
whenevery00
2014-03-03 · TA获得超过430个赞
知道小有建树答主
回答量:174
采纳率:100%
帮助的人:238万
展开全部
var num = $("#temp_table").find("tr").length;//不需要加1
var trs = $('猜唯#temp_table > tr');//:nth-child 你用这个 难道是table里还穗隐培有不携举是tr的标签?
for(var i=0;i<num;i++){
var x= trs.eq(i).find('td :eq(0)');//$('#temp_table tr:nth-child('+i+') td  eq:(0)'); 你这个是要获取第一个元素? 意思是一段字符串 加其他标签? 我也只是按照你的写法来的 eq:(0)没有这个、
$("#new_bzjh tr td").filter(':contains('+x+')').each(function(){// 这个倒是没什么特别需要改的
$(this).nextAll('td').each(function(_i){
if(_i>=3)return;//只管前3个
if(_i==2){//第三个特殊处理
var val = $(this).html();//这个this是第三个td
if(!val || val.indexOf('type')==-1)return;// 这里是排除处理
}
// 这里要分情况 看你是给td赋值 还是给td里面的元素赋值
//给td赋值
$(this).html(trs.eq(i).find('td :eq('+(_i+1)+')'));//如果是取内部元素的值 请用html()或者.val()
//给内部的input赋值 选其一
$(this).find('input').val(trs.eq(i).find('td :eq('+(_i+1)+')'));
});
});
}
更多追问追答
追问
可能我写的地方没有写清楚var x= $('#temp_table tr:nth-child('+i+‘) td  eq:(0)’);  这里我写错了 应该是里面的值var x= $('#temp_table tr:nth-child('+i+‘) td  eq:(0)’).html(),就是临时表中每行数据的第一个单元格
追答
var num = $("#temp_table").find("tr").length;//不需要加1
var trs = $('#temp_table > tr');//:nth-child 你用这个 难道是table里还有不是tr的标签?
for(var i=0;i<num;i++){
    var x= trs.eq(i).find('td:eq(0)').html();//$('#temp_table tr:nth-child('+i+') td  eq:(0)'); 你这个是要获取第一个元素? 意思是一段字符串 加其他标签? 我也只是按照你的写法来的 eq:(0)没有这个、
    $("#new_bzjh tr td").filter(':contains('+x+')').each(function(){// 这个倒是没什么特别需要改的
        $(this).nextAll('td').each(function(_i){
            if(_i>=3)return;//只管前3个
            if(_i==2){//第三个特殊处理
                var val = $(this).html();//这个this是第三个td
                if(!val || val.indexOf('type')==-1)return;// 这里是排除处理
            }
var html = trs.eq(i).find('td:eq('+(_i+1)+')').html();
            if($(this).find('input').length){
$(this).find('input').val(html);//如果内部有input 就给input赋值
}else{
$(this).html(html);//否则给td赋值
}
        });
    });
}

差不多也加个.html就行 你具体是哪不行?

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式