Javascript 如果页面上存在div元素,则隐藏其他元素

Javascript 如果页面上存在div元素,则隐藏其他元素,javascript,Javascript,我有一个动态web表单,我想检测元素是否可见;如果它是隐藏我的另一个元素。我有以下尝试,但这不是稳定的工作;i、 元素并不总是隐藏的。有更好的技术吗 setInterval( myValidateFunction2, 1000); function myValidateFunction2 () { var inElgbl = document.getElementById('field_52_116'); if (typeof(inElgbl) != 'undefine

我有一个动态web表单,我想检测元素是否可见;如果它是隐藏我的另一个元素。我有以下尝试,但这不是稳定的工作;i、 元素并不总是隐藏的。有更好的技术吗

setInterval( myValidateFunction2, 1000);

function myValidateFunction2 () {   
    var inElgbl =  document.getElementById('field_52_116');
    if (typeof(inElgbl) != 'undefined' && inElgbl != null)
    {
        document.getElementById('field_52_24').style.display = "none";
    }   
};  


默认情况下
显示:无但可能变成
显示:块如果变为
显示:块我想
显示:无我的另一个div元素。

如果某个元素占用文档中的空间,则认为它是可见的。在大多数情况下,这正是您想要的。 试试这个:

setInterval( myValidateFunction2, 1000);

function myValidateFunction2 () {   
    var inElgbl =  document.getElementById('field_52_116');
    if (inElgbl.offsetWidth <= 0 && inElgbl.offsetHeight <= 0)
    {
        document.getElementById('field_52_24').style.display = "none";
    }   
}; 
setInterval(myvalidatefunction21000);
函数myValidateFunction2(){
var INLEGBL=document.getElementById('field_52_116');

if(Inlegbl.offsetWidth如果某个元素占用文档中的空间,则认为该元素是可见的。对于大多数情况,这正是您想要的。 试试这个:

setInterval( myValidateFunction2, 1000);

function myValidateFunction2 () {   
    var inElgbl =  document.getElementById('field_52_116');
    if (inElgbl.offsetWidth <= 0 && inElgbl.offsetHeight <= 0)
    {
        document.getElementById('field_52_24').style.display = "none";
    }   
}; 
setInterval(myvalidatefunction21000);
函数myValidateFunction2(){
var INLEGBL=document.getElementById('field_52_116');

if(Inlegbl.offsetWidth最稳定的方法可能是使用a并将其设置为监视文档或文档中可能获取相关元素的部分

在下面的示例中,我将设置一个观察者来观察一个初始为空的
div
,设置好之后,我将动态添加我们应该关注的元素。您将看到该元素不会最终显示出来

//选择将观察到突变的节点
var targetNode=document.getElementById('parent');
//观察者选项(要观察哪些突变)
var config={attributes:true,childList:true,subtree:true};
//观察到突变时执行的回调函数
函数回调(mutationsList,observer){
//我们只需要测试看看节点是否真实,如果它存在,它将是真实的
if(document.getElementById('field_52_116')){
document.getElementById('field_52_24').style.display=“无”;
log(“检测到节点!正在删除…”);
} 
};
//创建链接到回调函数的观察者实例
var observer=新的MutationObserver(回调);
//开始观察目标节点是否存在已配置的突变
observer.observe(targetNode,config);
//因此,我们将添加要测试的节点
让newNode=document.createElement(“div”);
newNode.textContent=“我在这里,所以应该隐藏另一个节点!”;
newNode.id=“field_52_116”;
targetNode.appendChild(newNode);
//稍后,如果需要,您可以停止观察
//observer.disconnect();


要隐藏的元素
最稳定的方法可能是使用,并将其设置为监视文档或文档中可能出现问题的部分

在下面的示例中,我将设置一个观察者来观察一个初始为空的
div
,设置好之后,我将动态添加我们应该关注的元素。您将看到该元素不会最终显示出来

//选择将观察到突变的节点
var targetNode=document.getElementById('parent');
//观察者选项(要观察哪些突变)
var config={attributes:true,childList:true,subtree:true};
//观察到突变时执行的回调函数
函数回调(mutationsList,observer){
//我们只需要测试看看节点是否真实,如果它存在,它将是真实的
if(document.getElementById('field_52_116')){
document.getElementById('field_52_24').style.display=“无”;
log(“检测到节点!正在删除…”);
} 
};
//创建链接到回调函数的观察者实例
var observer=新的MutationObserver(回调);
//开始观察目标节点是否存在已配置的突变
observer.observe(targetNode,config);
//因此,我们将添加要测试的节点
让newNode=document.createElement(“div”);
newNode.textContent=“我在这里,所以应该隐藏另一个节点!”;
newNode.id=“field_52_116”;
targetNode.appendChild(newNode);
//稍后,如果需要,您可以停止观察
//observer.disconnect();


元素隐藏
,因此我在这里看到了一些问题——1)在
!==
上使用
!=
2)与字符串
“undefined”
相比,而不仅仅是
undefined
。无论如何,如果您可以包含HTML(或其中的某个子集),那么会更容易为您提供帮助同样。在您的
if
语句中执行
INEGBL!==null
应该足够了。
INEGBL!=null
将为真,前提是
INEGBL
既不是
null
也不是
undefined
。if子句的其余部分是多余的。您要检测的元素是否只是从页面中视觉隐藏,或者是i在执行某些操作/函数运行之前,t不存在?如果是第二个,可以尝试以下操作:
If(inElgbl){…}
,以检查元素是否存在?“我想检测元素是否可见”-存在的元素和可见的元素是两个不同的东西。您的元素可以存在也可以不可见,如果出现这种情况,这将失败。因此,我在这里看到一些问题--1)使用
!==
超过
!=
2)与字符串
比较“未定义”
而不仅仅是
未定义的
。不管怎样,如果您可以包含HTML(或其中的某个子集),帮助您会容易得多同样。在您的
if
语句中执行
INEGBL!==null
应该足够了。
INEGBL!=null
将为真,前提是
INEGBL
既不是
null
也不是
undefined
。if子句的其余部分是多余的。您要检测的元素是否只是从页面中视觉隐藏,或者是i在执行某些操作/函数运行之前,t不存在?如果是第二个,可以尝试以下操作:
If(i