jQuery数组解释

jQuery数组解释,jquery,arrays,Jquery,Arrays,我构造了一个数组,稍后我将使用它来比较一些值。 我使用这段代码来构造“myArray”,稍后我将使用它: var optionTexts = []; $('#stripeMeSubSubCat tr').each(function(){ if ($(this).find('input:checkbox.subsubcat_chkclass:not(:checked)').length == 0) { subsubrow_cat_id_no = parseInt($(this).c

我构造了一个数组,稍后我将使用它来比较一些值。 我使用这段代码来构造“myArray”,稍后我将使用它:

var optionTexts = [];  
$('#stripeMeSubSubCat tr').each(function(){

 if ($(this).find('input:checkbox.subsubcat_chkclass:not(:checked)').length == 0)
 {
   subsubrow_cat_id_no = parseInt($(this).closest("tr").attr("id")); 

   optionTexts.push(subsubrow_cat_id_no);
  };   

 });

var myArray = optionTexts.join(', ');
alert("myArray = "+myArray);
这里我使用myArray进行比较:

$('#stripeMeSubSubCat tr').each(function(){  

     myindex = $.trim($(this).closest("tr").attr("id"));
     var arr = [myArray];

     //var arr = [0, 439, 52, 53];

     myindex = parseInt(myindex);

     alert(myindex);
     alert(arr);

     if ((jQuery.inArray(myindex, arr)) == -1) {
       var equal = "FALSE";
     } else {
       var equal = "TRUE";
     $("#stripeMeSubSubCat tr[id='" + myindex + "'] input").attr('checked', true);
     };

     alert(equal);
 });
正如上面的代码一样,它总是返回FALSE。 但是,如果不使用第一段代码,只启用注释掉的var arr(在这里我将数组设置为fixed data),它将在应该返回TRUE的地方返回TRUE


有什么想法吗?

myArray是一个字符串,是

var myArray = optionTexts.join(', ');
稍后,您将尝试使用以下命令将其更改回阵列:

var arr = [myArray];
这将实际创建一个数组,其中
myArray
字符串是第一个也是唯一的元素。改用
拆分(“,”

var arr = myArray.split(", ");

myArray
是一个字符串,是

var myArray = optionTexts.join(', ');
稍后,您将尝试使用以下命令将其更改回阵列:

var arr = [myArray];
这将实际创建一个数组,其中
myArray
字符串是第一个也是唯一的元素。改用
拆分(“,”

var arr = myArray.split(", ");

myArray是通过连接optionsText数组的元素而不是一组元素创建的字符串变量。您应该检查optionsText而不是myArray

if ((jQuery.inArray(myindex, optionsText)) == -1) {

另外,为什么要将变量
设置为等于字符串“FALSE”或“TRUE”--为什么不简单地将其设置为
FALSE
TRUE
(布尔值)?

myArray是通过连接OptionText数组的元素而创建的字符串变量,而不是一组元素。您应该检查optionsText而不是myArray

if ((jQuery.inArray(myindex, optionsText)) == -1) {

另一方面,为什么要将变量
equal
设置为字符串“FALSE”或“TRUE”--为什么不简单地将其设置为
FALSE
TRUE
(布尔值)?

我添加了更改您建议的内容,并删除了myindex=parseInt(myindex);成功了!谢谢你的及时回复和回复。不过最奇怪的事情现在发生了。当我从代码中删除警报时,它不会更改复选框的属性。这是怎么回事?@andreas7:我不知道你在哪里设置了
myindex
属性。另外,虽然这可能不是问题的原因,
id
属性-它们不能只是数字;成功了!谢谢你的及时回复和回复。不过最奇怪的事情现在发生了。当我从代码中删除警报时,它不会更改复选框的属性。这是怎么回事?@andreas7:我不知道你在哪里设置了
myindex
属性。另外,虽然这可能不是问题的原因,
id
属性-它们不能仅是数字。通过这种方式,如果我保持myindex=parseInt(myindex),它也可以工作;然而,最奇怪的事情现在发生了。当我从代码中删除警报时,它不会更改复选框的属性。这是怎么回事?@andreas7-我不知道你上面的代码是如何工作的,因为
myArray
不是一个数组,因此
arr
是一个只包含单个元素的数组-
myArray
的值。即使
myarray
是一个数组,
arr
也将是一个包含单个元素的数组,而该元素本身恰好是一个数组。我可以看到您必须在哪里将
myIndex
转换为数值,否则您会将字符串与数字进行比较,但我认为您得到的结果是错误的,您确实应该检查
options text
的值。我已经按照您的建议进行了更改,因此没有在任何地方使用myArray。只要警报在代码中,它就可以正常工作。如果我删除它们,它就不能工作。是否存在同步问题,我如何管理它?@andreas7-整个过程是在DOM准备就绪后使用
ready
方法执行的<代码>$(函数(){…此处的代码…})我的整个代码在$(document.ready)内(function(){HERE});通过这种方式,如果我保持myindex=parseInt(myindex),它也可以工作;然而,最奇怪的事情现在发生了。当我从代码中删除警报时,它不会更改复选框的属性。这是怎么回事?@andreas7-我不知道你上面的代码是如何工作的,因为
myArray
不是一个数组,因此
arr
是一个只包含单个元素的数组-
myArray
的值。即使
myarray
是一个数组,
arr
也将是一个包含单个元素的数组,而该元素本身恰好是一个数组。我可以看到您必须在哪里将
myIndex
转换为数值,否则您会将字符串与数字进行比较,但我认为您得到的结果是错误的,您确实应该检查
options text
的值。我已经按照您的建议进行了更改,因此没有在任何地方使用myArray。只要警报在代码中,它就可以正常工作。如果我删除它们,它就不能工作。是否存在同步问题,我如何管理它?@andreas7-整个过程是在DOM准备就绪后使用
ready
方法执行的<代码>$(函数(){…此处的代码…})我的整个代码在$(document.ready)内(function(){HERE});