Javascript 循环内条件附加的更改
我使用javascript将行和列附加到表中。但是我需要td中的一个类名,根据`$.post响应中的条件将其转换为其他内容 我这样做:Javascript 循环内条件附加的更改,javascript,jquery,json,post,append,Javascript,Jquery,Json,Post,Append,我使用javascript将行和列附加到表中。但是我需要td中的一个类名,根据`$.post响应中的条件将其转换为其他内容 我这样做: let arr = ['Hermione', 'Ron', 'Harry'] arr.forEach(d=>{ $('#the_table>tbody').append(` <tr id='tr_${d}'> <td'>${d}</td&
let arr = ['Hermione', 'Ron', 'Harry']
arr.forEach(d=>{
$('#the_table>tbody').append(`
<tr id='tr_${d}'>
<td'>${d}</td>
<td><i id='change' class='no'></i></td>
</tr>
`);
});
const myfunc = () => {
$.post(api, json_object,
function(data, status) {
if (data.value === 'started') {
setTimeout(myfunc, 5000);
} else {
$('#change').removeClass('no').addClass('yes');
}
}, 'json');
}
myfunc();
当我这样做的时候,它只是改变了第一个值的值,赫敏。但是在console.log中,我可以看到data.value没有启动,所以应该改为yes
当条件通过后,我可以为每一行将其更改为“是”吗
$('#change').removeClass('no').addClass('yes');
您需要修复此选择器$'change'
我不知道api返回是否有id
但是你需要像这样选择它
$(`tr#${data.something} #change`)
您是否可以提供JSFIDLE或任何联机代码设置来调试更多内容?我可以看到第一个元素是有一个不被忽略的引用。 ${d}应该是这样的${d}
谢谢问题是您使用相同的id名称来标识许多不同的行。 每个ID必须是唯一的。因此,如果您有许多元素要操作,最好通过它们的类名来识别它们。将属性ID更改为CLASS,如下所示
// I have only change the attribute id to class
let arr = ['Hermione', 'Ron', 'Harry']
arr.forEach(d=>{
$('#the_table>tbody').append(`
<tr id='tr_${d}'>
<td'>${d}</td>
<td><i class='change' class='no'></i></td>// now their identified by class name
</tr>
`);
});
const myfunc = () => {
$.post(api, json_object,
function(data, status) {
if (data.value === 'started') {
setTimeout(myfunc, 5000);
} else {
$('.change').removeClass('no').addClass('yes');
}
}, 'json');
}
myfunc();
您有多个元素具有相同的id值,这是不允许的。您需要找出一种方法来区分它们。您可以在.forEach中使用索引,但还需要从.post调用返回索引