Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 美元。伊纳雷给出-1?_Javascript_Jquery - Fatal编程技术网

Javascript 美元。伊纳雷给出-1?

Javascript 美元。伊纳雷给出-1?,javascript,jquery,Javascript,Jquery,这应该是非常直截了当的: HTML 给我-1 有趣的是,如果我将jquery代码中的一个数字“$(thumba).data(“id”)替换为“26”,它就可以工作了 在这种情况下,结果应该是“2” 有什么想法吗?您需要将值转换为字符串 var thumbaid = $('#thumba').data("id").toString(); 为什么。。。?如果你愿意 console.log(itemids_array); 你会看到这个 ["28", "27", "26", "17", "18",

这应该是非常直截了当的:

HTML

给我-1

有趣的是,如果我将jquery代码中的一个数字“$(thumba).data(“id”)替换为“26”,它就可以工作了

在这种情况下,结果应该是“2”


有什么想法吗?

您需要将值转换为字符串

var thumbaid = $('#thumba').data("id").toString();
为什么。。。?如果你愿意

console.log(itemids_array);
你会看到这个

["28", "27", "26", "17", "18", "19", ""] 

它们不是数字,而是字符串。请参见

您需要将值转换为字符串

var thumbaid = $('#thumba').data("id").toString();
为什么。。。?如果你愿意

console.log(itemids_array);
你会看到这个

["28", "27", "26", "17", "18", "19", ""] 

它们不是数字,而是字符串。请参见

它不起作用的原因是jQuery数据返回的是int not字符串

看看这个例子

<a href="url" id="thumba" data-id="26">my link</a>
<input type="hidden" id="pageids" value="28,27,26,17,18,19,">

它不起作用的原因是jQuery数据返回的是int而不是字符串

看看这个例子

<a href="url" id="thumba" data-id="26">my link</a>
<input type="hidden" id="pageids" value="28,27,26,17,18,19,">

这是因为
thumbaid
是一个数字,
itemids\u数组
包含字符串。尝试
var currentpos=$.inArray(thumbaid.toString(),itemids\u数组)


jQuery的
data
函数读取
data-
属性并将数字解析为数字

这是因为
thumbaid
是一个数字,而
itemids\u数组包含字符串。尝试
var currentpos=$.inArray(thumbaid.toString(),itemids\u数组)


jQuery的
data
函数读取
data-
属性并将数字解析为数字

jQuery的
data
函数在初始化时对从
data-*
属性读取的数据进行处理,包括将类似数字的字符串转换为数字。由于
$.inArray
执行
=
检查,因此它失败。最后在字符串数组中查找数字26

如果您只是使用
.attr(“数据id”)
,转换就不会发生

此行为记录在:

每次尝试都会将字符串转换为JavaScript值(包括布尔值、数字、对象、数组和null)。只有在不改变值的表示形式的情况下,才会将值转换为数字。例如,“1E02”和“100.000”等同于数字(数值100),但转换它们会改变它们的表示形式,使它们保留为字符串。字符串值“100”被转换为数字100


如果您只使用
data
来读取
data-*
属性,我建议使用
attr
来避免这种情况,并避免由于
data
data-*
属性初始化时,设置数据时不会写入属性而造成的混乱。当然,如果您需要存储与元素相关联的数据,并且不希望它出现在属性上(因为它不是字符串数据,或者您不希望它显示在DOM检查器中),
data
是该工作的正确工具。

jQuery的
data
函数对初始化时从
data-*
属性读取的数据进行处理,包括将类似数字的字符串转换为数字。由于
$.inArray
执行
=
检查,因此它失败。最后在字符串数组中查找数字26

如果您只是使用
.attr(“数据id”)
,转换就不会发生

此行为记录在:

每次尝试都会将字符串转换为JavaScript值(包括布尔值、数字、对象、数组和null)。只有在不改变值的表示形式的情况下,才会将值转换为数字。例如,“1E02”和“100.000”等同于数字(数值100),但转换它们会改变它们的表示形式,使它们保留为字符串。字符串值“100”被转换为数字100

如果您只使用
data
来读取
data-*
属性,我建议使用
attr
来避免这种情况,并避免由于
data
data-*
属性初始化时,设置数据时不会写入属性而造成的混乱。当然,如果您需要存储与元素相关联的数据,并且不希望它出现在属性上(因为它不是字符串数据,或者您不希望它显示在DOM检查器中),
data
是该作业的正确工具。

$()。data()
数据-*
属性的值转换为JavaScript值。在您的情况下,
thumbaid
将转换为数字

$.inArray
使用严格相等运算符(==)比较元素。也就是说,
'26'==26
返回false,因为没有发生类型强制

从文档中:

每次尝试都会将字符串转换为JavaScript值 (这包括布尔、数字、对象、数组和null)。价值 仅当这样做不会更改值的 代表性。例如,“1E02”和“100.000”等同于 数字(数值100),但转换它们会改变 表示,以便将它们保留为字符串。字符串值“100”为 转换成数字100

$().data()
数据-*
属性的值转换为JavaScript值。在您的情况下,
thumbaid
将转换为数字

$.inArray
使用严格相等运算符(==)比较元素。也就是说,
'26'==26
返回false,因为没有发生类型强制

从文档中:

每次尝试都会将字符串转换为JavaScript值 (这包括布尔、数字、对象、数组和null)。价值 仅当这样做不会更改值的 代表性。例如,“1E02”和“100.000”等同于 数字(数值100),但转换它们会改变 表示,以便将它们保留为字符串。字符串值为“10”