老师,是这个意思吗?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | <!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的元素节点整体是这么写的吗?运行不出来,听得也乱,应该是调用或者哪里错了吧
48
收起
正在回答
3回答
同学你好,
1、第一行输出true是代表div是一个元素。第二行输出false说明是一个html元素,因为在进行
isHTMLElement判断时,会判断是否是xml,因为不是,所以会直接返回false:
视频老师这个地方写的有点不对,应该是取非的:
2、在测试的时候改为isElement(testDiv)。
如果我的回答帮助了你,欢迎采纳,祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧