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');