Javascript 如何检测元素是否具有::after(伪元素)?
假设一个Javascript 如何检测元素是否具有::after(伪元素)?,javascript,css,google-chrome,Javascript,Css,Google Chrome,假设一个输入元素在该元素末尾有一个伪元素::在该元素后面有一个按钮,即在输入元素和按钮元素之间有一个伪元素::在之后。例如,请看下图- 在上面的示例中,当单击按钮时,经过一段时间后,输入被更改,并且::after伪元素消失 如何检测输入是否有::after呢?您可以使用getComputedStyle(el,::after').content获取::after伪元素的内容(它也适用于::before)。如果内容不是none,则存在伪元素 const hasAfter=选择器=>{ const
输入
元素在该元素末尾有一个伪元素::在该元素后面有一个按钮,即在输入
元素和按钮
元素之间有一个伪元素::在之后。例如,请看下图-
在上面的示例中,当单击按钮时,经过一段时间后,输入
被更改,并且::after
伪元素消失
如何检测输入是否有::after
呢?您可以使用getComputedStyle(el,::after').content
获取::after
伪元素的内容(它也适用于::before
)。如果内容不是none
,则存在伪元素
const hasAfter=选择器=>{
const el=document.querySelector(选择器);
返回getComputedStyle(el,,::after')。内容!='none';
}
console.log(hasAfter('.has'));//真的
console.log(hasAfter('.hasnt'));//错误
.has::after{
内容:“之后”;
}
has
还没有
我认为这在javascript中是不可能的。如果伪元素具有与之关联的样式,则可以尝试类似的操作。var color=window.getComputedStyle(document.querySelector('.element'),':before')。getPropertyValue('any_style_property_value'))。如果返回的值未定义,则它不存在如何修改document.addEventListener('click',函数(事件){console.log(event.target.tagName);},false)
如果我想知道被单击的元素是否有::after
吗?用事件.target
-文档.addEventListener('click',函数(事件){console.log(getComputedStyle(event.target,'::after')。内容!='none');},false)
该::在有一个属性canFocus
为真或假后,该属性从服务器/互联网获取值,我可以获取canFocus
的值吗?@Mike-我不确定你在问什么。您应该使用相关代码打开一个新问题。