zoukankan      html  css  js  c++  java
  • 判断元素阶段类型

    兼容IE

    1.判断元素节点

    <body>
      <div id="test">aaa</div>
      <!--这是一个注释节点-->
      <script> var testDiv = document.createElement('div'); var isElement = function (obj) { if (obj && obj.nodeType === 1) {//先过滤最简单的 if( window.Node && (obj instanceof Node )){ //如果是IE9,则判定其是否Node的实例 return true; //由于obj可能是来自另一个文档对象,因此不能轻易返回false } try {//最后以这种效率非常差但肯定可行的方案进行判定 testDiv.appendChild(obj); testDiv.removeChild(obj); } catch (e) { return false; } return true; } return false; } var a = { nodeType: 1 } console.log(isElement(document.getElementById("test"))); //true console.log(isElement(document.getElementById("test").nextSibling));//false console.log(isElement(a));//false </script>
    </body>

    2.判断XML文档类型

    <body>
        <script>
            var isXML = function(doc) {
                return doc.createElement("p").nodeName !== doc.createElement("P").nodeName;
            }
    console.log(isXML(document)) //false </script> </body>

    3.判断HTML文档类型

    <body>
        <script>
            var isHTML = function(doc) {
                return doc.createElement("p").nodeName == doc.createElement("P").nodeName;
            }
            console.log(isHTML(document))  //true
        </script>
    </body>

    4.判断两种关系的元素节点

    <body>
        <div id="p-node">
            <div id="c-node">子节点内容</div>
        </div>
        <script>
            function fixContains(a, b) {
                try {
                    while ((b = b.parentNode)){
                        if (b === a){
                            return true;
                        }
                    }
                    return false;
                } catch (e) {
                    return false;
                }
            }
            var pNode = document.getElementById("p-node");
            var cNode = document.getElementById("c-node").childNodes[0];
            alert(fixContains(pNode, cNode)); //true        
    //alert(fixContains(document, cNode)); //true </script> </body>
  • 相关阅读:
    Error 500curl_setopt(): CURLOPT_SSL_VERIFYHOST no longer accepts the value 1, value 2 will be used i
    解决Apache提示没有权限访问的问题
    【服务器】本地运行成功,但服务器上运行却显示错误500
    CentOS 7中PHP配置文件php.ini的放在哪个位置
    用yum快速搭建LAMP平台
    redis 在32位系统安装以及使用
    CentOS7查看和关闭防火墙
    CENTOS7下安装REDIS
    在centos和redhat上安装docker
    Annotation 注解
  • 原文地址:https://www.cnblogs.com/yulingjia/p/6515089.html
Copyright © 2011-2022 走看看