是否是有效的dom节点--轮子代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>是否是有效的dom节点</title>
<script type="text/javascript">
//是否是节点(body有效)
function isNode(elem) {
var ts = Object.prototype.toString;
var reg = /^(\[object HTML).*?(Element\])$/;
var str = ts.call(elem); //IE8下body会识别成[object Object]
if (reg.test(str)
|| (elem !== undefined
&& elem !== null
&& elem.nodeName !== undefined
&& elem.nodeName !== '#text'
&& elem.nodeName !== '#document')) {
return true;
} return false;
}
</script>
</head>
<body>
<ul>
<li>
列表节点
</li>
</ul>
<h4>单测结果输出:</h4>
<script type="text/javascript"> //简单测试框架
function test(testArr, expectArr, explain) {
var tStr;
for (var i = 0, len = testArr.length; i < len; i++) { if(explain && explain[i]){
tStr = explain[i] + ' -> ' + expectArr[i] + ':';
} if (isNode(testArr[i]) === expectArr[i]) {
tStr += '成功';
} else {
tStr += '失败';
} document.write(tStr + '<br />');
}
} // 对验证的说明
var explain;
//预期结果
var expect;
var ul = document.getElementsByTagName('ul')[0];
var childNodes = ul.childNodes;
if (childNodes.length == 3) {
expect = [false, true, false];
explain = [
'标准浏览器下childNodes获取的换行文本节点',
'标准浏览器下childNodes获取的Dom节点',
'标准浏览器下childNodes获取的换行文本节点'
];
} else {
expect = [true];
explain = ['IE下childNodes获取的Dom节点'];
}
test(childNodes, expect, explain); document.write('------------------------<br />'); var testArr =
[
document,
window,
document.body,
undefined,
null,
true,
false,
'' ,
0,
2 / 0,
new Number(3),
'str',
new String('str'),
new String('')
];
expect =
[
false,
false,
true,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false
];
// 对验证的说明
explain = [
'document',
'window',
'document.body',
'undefined',
'null',
'true',
'false',
'空字符串',
'数字0',
'NaN,如2/0',
'new Number(3)',
'str',
'new String("str")',
'new String("")'
];
test(testArr, expect, explain);
document.write('------------------------<br />'); //这种变态构造就管不了了
test([
{nodeName: 'DIV'}
], [false]); </script>
</body>
</html>
是否是有效的dom节点--轮子代码的更多相关文章
- 手动触发dom节点事件代码
在爬代码过程中,碰到一个稀奇古怪的问题.需要手工修改select的值,然后手动触发select的change事件,但使用网络上查到的通过trigger.onchange()事件触发都不执行,没办法,只 ...
- DOM节点的使用(常用方法+代码)
DOM节点的应用 学习总结 1. 什么是 DOM 2. HTMLDOM 3. 元素获取 元素获取方式 元素节点的属性操作 4. Node 对象的属性和方法 常用属性 常用方法 5. 事件处理 事件驱动 ...
- 深入理解DOM节点操作
× 目录 [1]创建节点 [2]插入节点 [3]移除节点[4]替换节点[5]复制节点 前面的话 一般地,提起操作会想到“增删改查”这四个字,而DOM节点操作也类似地对应于此,接下来将详细介绍DOM的节 ...
- 深入理解DOM节点类型第六篇——特性节点Attribute
× 目录 [1]特征 [2]属性 [3]方法 前面的话 元素的特性在DOM中以Attr类型表示,从技术角度讲,特性是存在于元素的attributes属性中的节点.尽管特性是节点,但却不是DOM节点树的 ...
- DOM 节点的克隆与删除
无奈的开头 关于DOM节点操作,如果仅仅是根据标准API来操作,那是最简单不过的了.但是现实中却哪有这么容易的问题让我们解决,其实不仅仅是节点的克隆与删除,节点的添加也是如此,而且添加节点需要考虑的情 ...
- DOM节点属性
节点属性 在文档对象模型 (DOM) 中,每个节点都是一个对象.DOM 节点有三个重要的属性 : 1. nodeName : 节点的名称 2. nodeValue :节点的值 3. nodeType ...
- 第6章 DOM节点操作
一.创建节点 为了使页面更加智能化,有时我们想动态的在 html 结构页面添加一个元素标签,那么 在插入之前首先要做的动作就是:创建节点. varbox=$('<div id="box ...
- 通过DOM节点操作来获取表单信息
这是之前突发奇想地用dom节点的关系来操作表单的故事.. 事情的经过是这样的,大概就是一个平台注册后有留言功能,管理员登录之后可以对这些留言进行回复.这个页面呢,就是通过foreach获取到数据库里的 ...
- 关于dom节点绑定滑动事件导致浏览器上下滑动失效解决方案--黄丕巧
1.移动端开发往往需要添加一下自定义的左右滑动事件,但是添加了左右滑动事件之后就要阻止浏览器大默认事件,否则dom节点的滑动事件和浏览器本身的滑动会出现冲突,导致滑动的时候会出现消失瞬间再出现的效果 ...
随机推荐
- Snail’s trouble
Snail’s trouble Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- Windows下命令(bat可用)
转自 http://blog.csdn.net/CDersTeam/article/details/51346911 gpedit.msc-–组策略 2. sndrec32---录音机 3. Nslo ...
- redhat7 Samba
1.先安装Samba服务 yum install -y samba samba-client 2.配置文件 vi /etc/samba/smb.conf --主配置文件 [global] --全局 ...
- form提交地址地址正确但是依旧报错404找不到路径
---恢复内容开始--- 我的jsp中保含了">="和"<="符号,form提交的时候会有个标签校验,如下: private static bool ...
- eclipse构建maven+scala+spark工程
前提条件 下载安装Scala IDE build of Eclipse SDK 构建工程 1.新建maven工程 2.配置项目信息 3.新建scala对应的Source Folder 4.添加scal ...
- jquery实现抽奖小游戏
在很多网站或游戏活动中我们都会看到有关抽奖的活动或界面: 下面我将给大家介绍下如何通过javascript来实现这样的一个抽奖功能,主要从下面三个步骤入手(文中着重介绍第三部分有关功能的实现): 1. ...
- 手动安装Eclipse的PyDev插件,重启无效
想好好学习Python,又不想只用Emeditor开发,于是想到了Eclipse.之前配置过PyDev,很久没用,就放下了.这次重新配置,遇到了不少问题总结如下: 第一,使用网址自动更新.从网上搜了很 ...
- 深度学习的异构加速技术(一):AI 需要一个多大的“心脏”?
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:kevinxiaoyu,高级研究员,隶属腾讯TEG-架构平台部,主要研究方向为深度学习异构计算与硬件加速.FPGA云.高速视觉感知等方向 ...
- flex布局元素操作详情
之前布局一直用的是 position,float之类的,趁着国庆学习一下 flex 布局 父元素: flex-direction: row row-reverse column column-reve ...
- NodeJS寻常小毛病
在写关于NodeJS项目中常遇到的小错误 此时用到的服务器是phpstudy中的MySQL 1. First argument must be a string or Buffer 解决方法: ...