$. inarray()返回false -1,即使变量匹配数组
$.inArray() returns false -1 even though the variable matches array
我试图看到我的currentMedia
变量(在DOM中)可以在我的数组media
中找到,然后返回i
,它应该是0而不是-1。
如果我运行console.log(media[0]);
和console.log(currentMedia);
的结果是相同的,但你会注意到铬的颜色,media[0]
看起来像活的html,因为currentMedia
返回完全相同的文本,但变灰。
我的HTML是这样的:
<div class="slideshow">
<div class="media">
<img src="http://placehold.it/112x112" style="opacity: 0;">
</div>
</div>
这是一个链接到正在运行的代码图像- https://i.stack.imgur.com/6jatc.jpg您将看到media[0]
和currentMedia
的console.log
值似乎是相同的,但currentImageKey();
函数没有返回0
,而是返回-1
function currentImageKey(i) {
currentMedia = $(".media").children()[0].outerHTML
i = $.inArray(currentMedia, media)
return i;
};
this应该返回0
function currentImageKey(i) {
currentMedia = $(".media").children()[0].outerHTML
i = $.inArray(currentMedia, media)
return i;
};
currentImageKey();
if (currentMedia === $(".media").children()[0].outerHTML ) {
console.log("equal");
}
if(jQuery.inArray(currentMedia, media) != -1) {
console.log("is in array");
} else {
console.log("is NOT in array");
}
返回
equal
is NOT in array
和undefined
正如评论中提到的:
运行$。inArray w/o .outerHTML
将导致对数组的正确评估。
。outerHTML是一个字符串类型的JS属性。
"元素DOM接口的outerHTML属性获取描述该元素及其后代的序列化HTML片段。可以将其设置为用从给定字符串解析的节点替换元素。"
参见- https://developer.mozilla.org/en-US/docs/Web/API/element.outerHTML
function currentImageKey(i) {
currentMedia = $(".media").children()[0]
i = $.inArray(currentMedia, media)
return i;
};
currentImageKey();
这将返回与数组进行比较的正确值。
相关文章:
- Angularjs:访问范围变量数组并计算平均值
- 将 php 变量(数组)json_encode JavaScript 变量时的键排序
- 具有公共属性的变量数组
- Highcharts将变量数组添加到序列中
- 如何在Javascript函数中添加php变量/数组(在jsGrid({controller})中)
- Javascript项目通过变量数组进行搜索
- 用于交替结果的变量数组
- 如何将变量数组从 laravel 控制器传递到我的 ajax 函数
- 如何在 Javascript 中从数组创建变量数组
- 使用 Javascript 创建变量数组(动态,下拉)
- .serialize() Javascript 中的变量数组
- 更改全局变量(数组)的 JavaScript 函数
- 使用变量数组调用函数
- 使用 JavaScript 变量数组
- 如何使用静态变量数组
- 变量数组+正则表达式不能一起工作
- 将变量数组大写
- 变量数组中的对象是否可能有2个值
- 将java变量/数组传递给android webview中的javascript
- 从for循环(Javascript)中创建变量数组