jQuery数组解释
我构造了一个数组,稍后我将使用它来比较一些值。 我使用这段代码来构造“myArray”,稍后我将使用它: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
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});