Hy to all, 我有一些问题,一些代码不会引发错误,但确实不起作用。 我有这样的Ajax调用:
function getroleitems(ruolo){
fun = new Array();
$.ajax({
type: "POST",
data: {id: ruolo},
url: "getroleitems.php",
success: function(data){
fun = data;
console.log(fun);
for (var i=0;i<44;i++){
if(fun.indexOf("i")>-1){
alert('trovato '+i);
$('#'+i).attr('checked', true);
}
}
},dataType:"json"
});
这从db得到一个数字数组(只有1到43之间的所有数字中的一些)。一个例子是:[“0”,“27”,“31”,“30”,“32”,“33”,“8”,“29”,“19”,“42”]。 关键是我不能用1和43之间的所有数字(for循环)来评估这个数组,因为for循环中的if永远不会计算为true。我试过没有运气的$ .inArray和indexOf。 我究竟做错了什么? 提前致谢 Lelio
答案 0 :(得分:3)
您可以通过在选择器中使用,
来完全跳过循环。
if (fun.length) // only do this if there is something to do
$('#' + fun.join(', #')).attr('checked', true);
此外,值得注意的是,使用 az 以外的字符开始 id 可能会产生意外结果,即使在 HTML5中允许< / em> spec。您可能希望在数字部分前加上字母前缀。
答案 1 :(得分:1)
将fun.indexOf("i")
更改为fun.indexOf(''+i)
答案 2 :(得分:0)
if(fun.indexOf("i")>-1){
你的“i”介于双引号之间而不被视为变量如果你尝试这样做:
if(fun.indexOf(''+i)>-1){
答案 3 :(得分:0)
您所要做的就是:
fun.each( function ( i ) {
$( '#' + i ).attr( 'checked' , true );
});
答案 4 :(得分:0)
尝试以下代码:
function getroleitems(ruolo){
fun = new Array();
$.ajax({
type: "POST",
data: {id: ruolo},
url: "getroleitems.php",
success: function(data){
fun = data;
console.log(fun);
for (var i=0;i<44;i++){
if(fun.indexOf(i.toString())>-1){
alert('trovato '+i);
$('#'+i).attr('checked', true);
}
}
},dataType:"json"
});
我在if条件
中将“i”更改为i.toString()