$. inarray()返回false -1,即使变量匹配数组

$.inArray() returns false -1 even though the variable matches array

本文关键字:变量 数组 inarray 返回 false      更新时间:2023-09-26

我试图看到我的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]currentMediaconsole.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");
}

返回

equalis NOT in arrayundefined

正如评论中提到的:

运行$。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();

这将返回与数组进行比较的正确值。