我试图看到我的currentMedia
变量(在DOM中)可以在我的数组media
中找到,然后返回i
,它应该是0而不是-1。
如果我运行console.log(media[0]);
和console.log(currentMedia);
结果相同但您会注意到chrome中的颜色media[0]
看起来像实时html,其中currentMedia
会返回确切的结果相同的文字,但灰色。
我的HTML看起来像这样:
<div class="slideshow">
<div class="media">
<img src="http://placehold.it/112x112" style="opacity: 0;">
</div>
</div>
这是指向令人困惑的代码图片的链接 - http://imgur.com/PBBNuoy您会看到console.log
和media[0]
的{{1}}值看起来相同但是currentMedia
函数不会返回currentImageKey();
,而是返回0
-1
这应该返回0
function currentImageKey(i) {
currentMedia = $(".media").children()[0].outerHTML
i = $.inArray(currentMedia, media)
return i;
};
所有这一切都回归
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
答案 0 :(得分:0)
正如评论中所述:
运行$ .inArray w / o .outerHTML
将导致对阵列的正确评估。
.outerHTML是JS类型的String属性。
“元素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();
这将返回与数组进行比较的正确值。