Javascript 对动态添加到页面的输入字段的引用

Javascript 对动态添加到页面的输入字段的引用,javascript,jquery,Javascript,Jquery,在我的项目的一个jsp页面中,我有一个jquery代码,它用来自服务器的动态数据(json字符串)填充一个表: 该行应该选中日期和时间值相似的复选框,但是当我运行应用程序并打开此页面时,没有选中任何内容,尽管我在变量“obj_horario”中有数据,正如您在上面的代码中所看到的那样 有人能看出我做错了什么 更新 我将上面突出显示的代码更改为: for(var index in obj_horario.Horario) { if(obj_hora.Hora

在我的项目的一个jsp页面中,我有一个jquery代码,它用来自服务器的动态数据(json字符串)填充一个表:

该行应该选中日期和时间值相似的复选框,但是当我运行应用程序并打开此页面时,没有选中任何内容,尽管我在变量“obj_horario”中有数据,正如您在上面的代码中所看到的那样

有人能看出我做错了什么

更新

我将上面突出显示的代码更改为:

        for(var index in obj_horario.Horario) {
            if(obj_hora.Hora[item].hora == obj_horario.Horario[index].hora && obj_data.Data[item2].data == obj_horario.Horario[index].data) {
                console.info('counter='+counter);
                console.info('Hora = ' + obj_hora.Hora[item].hora + '| Horario.hora = ' + obj_horario.Horario[index].hora);
                console.info('Data = ' + obj_data.Data[item2].data + '| Horario.data = ' + obj_horario.Horario[index].data);
                var checkbox = $('input[name='+counter+']');
                $(checkbox).attr("checked", "true");
            }
        }
包括console.info()函数;现在,我可以在浏览器控制台中看到,if语句正确地选择了应该检查的iTen,但我猜这段代码:

                var checkbox = $('input[name='+counter+']');
                $(checkbox).attr("checked", "true");
你工作不正常。我猜这是因为它引用了一个动态创建的对象-我以前也遇到过类似的问题,解决了将动态对象包含在静态对象中,并将事件绑定到这个静态元素的问题,但是现在我不知道如何做同样的事,因为我触发了任何事件,只是将元素添加到页面中

任何人都可以为我指出解决这个问题的方向吗?

在这部分:

for(var item in obj_hora.Hora) {
    newRow2 = $('<tr>');
    newCol2 = '<td>' + obj_hora.Hora[item].string + '</td>';
    for(var item2 in obj_data.Data) {
        newCol2 += '<td>' + '<input type="checkbox" class="horario" data-key_data="'+obj_data.Data[item2].data+'" data-key_hora="'+obj_hora.Hora[item].hora+'" name="'+counter+'">' + '</td>';
        for(var index in obj_horario.Horario) {
            if(obj_hora.Hora[item].hora == obj_horario.Horario[index].hora && obj_data.Data[item2].data == obj_horario.Horario[index].data)
                $('input[name='+counter+']').attr("checked", "true");
        }
        counter++;
    }
    newRow2.append(newCol2);
    $("table.horarios").append(newRow2);
}
(第二种解决方案)将原始代码替换为以下内容:

for(var item in obj_hora.Hora) {
    newRow2 = $('<tr>');
    newCol2 = '<td>' + obj_hora.Hora[item].string + '</td>';
    newRow2.append(newCol2);
    for(var item2 in obj_data.Data) {

        newCol2 = '<td>' + '<input type="checkbox" class="horario" data-key_data="'+obj_data.Data[item2].data+'" data-key_hora="'+obj_hora.Hora[item].hora+'" name="'+counter+'">' + '</td>';
        newRow2.append(newCol2);
        for(var index in obj_horario.Horario) {
            if(obj_hora.Hora[item].hora == obj_horario.Horario[index].hora && obj_data.Data[item2].data == obj_horario.Horario[index].data)
                $('input[name='+counter+']').attr("checked", "true");
        }
        counter++;
    }

    $("table.horarios").append(newRow2);
}
for(对象中的变量项){
newRow2=$('');
newCol2=''+obj_hora.hora[item].string+'';
newRow2.append(newCol2);
for(obj_data.data中的var项2){
newCol2=''+''+'';
newRow2.append(newCol2);
对于(obj_horario.horario中的var指数){
if(obj_hora.hora[item].hora==obj_horario.horario[index].hora&&obj_data.data[item2].data==obj_horario.horario[index].data)
$('input[name='+counter+']')。attr(“选中”,“true”);
}
计数器++;
}
$(“table.horarios”).append(newRow2);
}

Hi。如果您得到相同的json数据,我认为问题不在for部分。这是我尝试时得到的o/p。对于(obj_hora.hora中的变量i){if(obj_hora.hora[i].hora==obj_horario.horario[i].hora{console.info('hora='+obj_hora.hora[i].hora)console.info('horario='+obj_horario.horario[i].horario])}hora=06:00:00,horario=06:30:00,horario=07:00,Horario=07:00:00您是否也可以发布html部分?你在控制台工具中有任何错误吗?页面的完整代码是这样的:没有,我在控制台工具中没有任何错误(我现在使用的是google chrome,但我也在mozilla firefox中进行了测试,都是在kubuntu linux中)。
for(var item in obj_hora.Hora) {
    newRow2 = $('<tr>');
    newCol2 = '<td>' + obj_hora.Hora[item].string + '</td>';
    for(var item2 in obj_data.Data) {
        newCol2 += '<td>' + '<input type="checkbox" class="horario" data-key_data="'+obj_data.Data[item2].data+'" data-key_hora="'+obj_hora.Hora[item].hora+'" name="'+counter+'">' + '</td>';
        for(var index in obj_horario.Horario) {
            if(obj_hora.Hora[item].hora == obj_horario.Horario[index].hora && obj_data.Data[item2].data == obj_horario.Horario[index].data)
                $('input[name='+counter+']').attr("checked", "true");
        }
        counter++;
    }
    newRow2.append(newCol2);
    $("table.horarios").append(newRow2);
}
for(var item in obj_hora.Hora) {
    for(var item2 in obj_data.Data) {
        for(var index in obj_horario.Horario) {
            if(obj_hora.Hora[item].hora == obj_horario.Horario[index].hora && obj_data.Data[item2].data == obj_horario.Horario[index].data)
                $('input[name='+counter+']').attr("checked", "true");
        }
        counter++;
    }
}
for(var item in obj_hora.Hora) {
    newRow2 = $('<tr>');
    newCol2 = '<td>' + obj_hora.Hora[item].string + '</td>';
    newRow2.append(newCol2);
    for(var item2 in obj_data.Data) {

        newCol2 = '<td>' + '<input type="checkbox" class="horario" data-key_data="'+obj_data.Data[item2].data+'" data-key_hora="'+obj_hora.Hora[item].hora+'" name="'+counter+'">' + '</td>';
        newRow2.append(newCol2);
        for(var index in obj_horario.Horario) {
            if(obj_hora.Hora[item].hora == obj_horario.Horario[index].hora && obj_data.Data[item2].data == obj_horario.Horario[index].data)
                $('input[name='+counter+']').attr("checked", "true");
        }
        counter++;
    }

    $("table.horarios").append(newRow2);
}