jQuery(';#myModal:visible';)。Javascript中的长度===0
在纯JS中,jQuery(';#myModal:visible';)。Javascript中的长度===0,javascript,jquery,Javascript,Jquery,在纯JS中,jQuery('#myModal:visible')的等价物是什么 我使用了下面的代码,但是它返回了一个类型错误 TypeError:Window.getComputedStyle的参数1不是对象 使现代化 此代码仅在没有任何#myModal是DOM时有效。 const元素=document.querySelector(“#myModal”); 返回元素===null不使用querySelector只需使用getElementById const isModalVisible=(
jQuery('#myModal:visible')的等价物是什么
我使用了下面的代码,但是它返回了一个类型错误
TypeError:Window.getComputedStyle的参数1不是对象
使现代化
此代码仅在没有任何#myModal
是DOM
时有效。
const元素=document.querySelector(“#myModal”);
返回元素===null
不使用querySelector
只需使用getElementById
const isModalVisible=(id)=>{
const modal=document.getElementById(id);
返回模式!==null&&window.getComputedStyle(模式)。显示===“无”;
}
#myModal{
显示:无;
}
模态是隐藏的吗?
问题是您假设找到了元素
querySelector
返回对HTML对象的引用,如果查询与元素不匹配,则返回null
记住这一点,你必须想象你的第二行是:
return window.getComputedStyle(null).display === 'none';
现在很明显你为什么会出错;无法获取计算样式的null
修正:
document.querySelector(“#myModal”)==null
我将开始调试。在返回
行上放置一个断点,检查元素
的值。顺便说一句,在jQuery中,您可以使用jQuery(“#myModal”)简化该代码。它是(“:visible”)
,但这与要点无关:)。请提出一个新问题(因为您已经收到了几个回答原始问题的答案)。在这个新问题中,请包含一个,提供您运行此JavaScript所针对的HTML。我看到您更新了您的答案!在您的例子中,这个问题可以通过简单的旧Javascript轻松解决。为什么不完全兼容:)我的坏!style属性未获取计算的样式。无效。我有一个模态,但是它的显示
属性是无
。这不是你的问题。我已经回答了你提出的问题,代码是正确的。
return window.getComputedStyle(null).display === 'none';
const element = document.querySelector("#myModal");
if (element)
return window.getComputedStyle(element).display === 'none';