Jquery 在javascript中,In-array不是work-In-if语句

Jquery 在javascript中,In-array不是work-In-if语句,jquery,Jquery,当我的exist\u id数组值为null时,if条件起作用 val = this.value $(document).ready(function() { $('.all_id_checkbox').click(function() { var a = this.checked; if (a == true) { exist_id = new Array(); exist_id = <?php

当我的
exist\u id
数组值为
null
时,
if
条件起作用

val = this.value  

$(document).ready(function() {
    $('.all_id_checkbox').click(function() {
        var a = this.checked;
        if (a == true) {
            exist_id = new Array();
            exist_id = <?php echo json_encode($exist); ?>;
            val = parseInt(this.value);

            if (jQuery.inArray(val, exist_id)) { 
                exist_error.push(val);
            } else { }
        }   
    });
});
val=this.value
$(文档).ready(函数(){
$('.all_id_复选框')。单击(函数(){
var a=此项检查;
如果(a==true){
exist_id=新数组();
存在_id=;
val=parseInt(这个.value);
如果(jQuery.inArray(val,exist_id)){
存在错误推送(val);
}else{}
}   
});
});

如果
存在\u id
是一个对象,
jQuery.inArray()
不工作是正常的; inArray检查值数组是否包含值,以便无法在键值对(json)中进行检查

(您应该首先向我们显示
console.log(exist\u id)
的输出)

无论如何,您将
json\u encode()
的返回赋值给
exist\u id
,但正如您所知,json的意思是“JavaScript对象表示法”,因此
json\u encode
的返回将是“对象表示法”,因此当您将其赋值给
exist\u id
时,它将成为一个JavaScript对象

显然,
jQuery.inArray
不起作用

为了让它工作,只需传递对象的值,而不是json(键值对):

顺便说一句,我看到您的javascript中有一个php标记,这意味着您正在使用内联脚本。这是一个糟糕的做法。您应该做的是:

将数据放入html元素的数据属性中:

<div id="exist-id" data-ids="<?php echo json_encode($exist); ?>"></div>

存在的
$exist
的值是多少?或者更好——PHP输出后,实际的JS代码是什么?我猜
exist\u id
将是一个对象,因此
$.inArray
$(document.ready)无效(function(){$('.all\u id\u checkbox')。单击(function(){var a=this.checked;var val=parseInt(this.value);if(a==true){var exist\u error=[];var exist_id=;var new_array=Object.values(exist_id);if(jQuery.inArray(val,new_array)){exist_error.push(val);}else{}}})
<div id="exist-id" data-ids="<?php echo json_encode($exist); ?>"></div>
$('#exist_id').data('ids');