老师,是这个意思吗?

老师,是这个意思吗?

<!DOCTYPE html>
<html>
    <head>
        <meta charest="utf-8">
                <title>test</title>
    </head>
    <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 ) ){
                        return true;
                        }
                        try {
                        //假1不是元素节点不能执行下面的两个方法,报错返回false
                        testDiv.appendChild(obj);
                        testDiv.removeChild(obj);
                        } catch (e){
                        return false;
                        }
                        return true;
                    }
                    return false;
                    }

                //判断是XML还是HTML的元素节点
                var isXML = function(doc) {

                            //判断是否为XML写!==,判断是否为HTML写===
                    return doc.createElement("p").nodeName !== doc.createElement("p").nodeName;
                    }

                //下面为被测试的函数
                var isHTMLElement = function(el){
                    if(isElement(el)){
                    return isXML(el.ownerDocument);
                    }
                    return false;
                }
                </script>
    </body>
</html>

老师想判断是否为XML的元素节点整体是这么写的吗?运行不出来,听得也乱,应该是调用或者哪里错了吧

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,

1、第一行输出true是代表div是一个元素。第二行输出false说明是一个html元素,因为在进行

isHTMLElement判断时,会判断是否是xml,因为不是,所以会直接返回false:

http://img1.sycdn.imooc.com//climg/5e37e43809c0f10b06420226.jpg

视频老师这个地方写的有点不对,应该是取非的:

http://img1.sycdn.imooc.com//climg/5e37e506094d1b4608460341.jpg

2、在测试的时候改为isElement(testDiv)。

如果我的回答帮助了你,欢迎采纳,祝学习愉快!

  • Redamancy_Y6 提问者 #1
    更改之后的输出结果两个都是true,说明第一行的div是一个HTML元素对吧
    2020-02-03 18:15:08
  • 好帮手慕粉 回复 提问者 Redamancy_Y6 #2
    同学你好,对的。如果我的回答帮助了你,欢迎采纳,祝学习愉快!
    2020-02-03 18:28:10
好帮手慕粉 2020-02-03 13:50:01

同学你好,是测试的同学自己写的div标签:

http://img1.sycdn.imooc.com//climg/5e37b46e095068de07940573.jpg

如果我的回答帮助了你,欢迎采纳,祝学习愉快!

  • 提问者 Redamancy_Y6 #1
    老师,第一个输出结果是true说明第一行的div是XML的元素节点,第二个输出结果是false说明第一行的div不是HTML的元素节点是这个意思吗?黄色箭头通过id获取div标签这里应该把什么修改成isElement(testDiv);呢?不好意思学的有点乱,麻烦老师再解答一下
    2020-02-03 14:28:20
好帮手慕粉 2020-02-03 11:21:34

同学你好,代码实现的是正确的,运行也是正确的,同学可以打印出结果看一下:

http://img1.sycdn.imooc.com//climg/5e3791a309590b8f05250073.jpg

http://img1.sycdn.imooc.com//climg/5e3791ad09d9128003310138.jpg

如果我的回答帮助了你,欢迎采纳,祝学习愉快~

  • 提问者 Redamancy_Y6 #1
    console.log(isElement(test)); console.log(isHTMLElement(test)); 老师这两句输出是判断哪一段的代码?
    2020-02-03 12:34:09
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师