原生JS实现几个常用DOM操作API实例
创作时间:
作者:
@小白创作中心
原生JS实现几个常用DOM操作API实例
引用
1
来源
1.
http://www.cdweb.net/article/psdpio.html
本文将介绍如何使用原生JavaScript实现一些常用的DOM操作API实例,包括类似jQuery的sibling方法、class选择器,以及一些常用的DOM操作函数如getElementsByClassName、addLoadEvent、addClass、insertAfter和getNextElement等。
原生实现jQuery的sibling方法
原生实现jQuery的class选择器
// 用数组模拟jQuery的class选择器
function getClassName(ParentId, NewClassName) {
var AllClassElem = ParentId.getElementsByTagName("*");
var AllClass = [];
var i = 0;
for (i = 0; i < AllClassElem.length; i++) {
if (AllClassElem[i].className == NewClassName) {
AllClass.push(AllClassElem[i]);
}
}
return AllClass;
}
// 用法:
var PElementId = document.getElementById("bar");
var buttons = getClassName(PElementId, "sco");
// 取id="bar"下class="sco"的元素;
getElementsByClassName()
/**
* 获取指定类名的元素对象集合
* @param {Object} node 父节点
* @param {String} classname 指定类名
* @return {[Object]}目标对象集合
*/
function getElementsByClassName(node, classname) {
// 如果浏览器支持则直接使用
if (node.getElementsByClassName) {
return node.getElementsByClassName(classname);
} else {
return (function getElementsByClass(searchClass, node) {
if (node == null) {
node = document;
}
var classElements = [];
var els = node.getElementsByTagName("*");
var elsLen = els.length;
var pattern = new RegExp("(^|\\s)" + searchClass + "(\\s|$)");
var i, j;
for (i = 0, j = 0; i < elsLen; i++) {
if (pattern.test(els[i].className)) {
classElements[j] = els[i];
j++;
}
}
return classElements;
})(classname, node);
}
}
addLoadEvent()
/**
* 方便的将在文档加载后运行的函数添加到window.onload中
* @param {function} func 待运行函数
*/
function addLoadEvent(func) {
var oldOnload = window.onload;
// typeof 返回String类型
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function () {
oldOnload();
func();
}
}
}
addClass()
/**
* 为指定元素结点添加新类名
* element 元素结点
* value 类名
*/
function addClass(element, value) {
// 如果元素类名为空,直接将value赋值给相应的元素类名
if (!element.className) {
element.className = value;
} else {
// 否则需要将类名之间用空格隔开
newClassName = element.className;
// 多个类名间添加空格
newClassName += ' ';
newClassName += value;
element.className = newClassName;
}
}
insertAfter()
/**
* 在目标元素结点后面插入新的元素结点
* newElement 待插入的新元素结点
* targetElement 目标元素结点
*/
function insertAfter(newElement, targetElement) {
var parent = targetElement.parentNode;
if (parent.lastChild == targetElement) {
parent.appendChild(newElement);
} else {
parent.insertBefore(newElement, targetElement.nextSibling);
}
}
getNextElement()
/**
* 获取下一个元素结点
* @param {Object} node 兄结点
* @return {Object || null}下一个元素结点或未获取到
*/
function getNextElement(node) {
var sibNode = node.nextSibling;
if (sibNode.nodeType == 1) {
return node;
}
if (sibNode.nextSibling) {
// 递归调用
return getNextElement(node.nextSibling);
}
return null;
}
以上就是使用原生JavaScript实现几个常用DOM操作API实例的全部内容,希望能给大家一个参考。
热门推荐
亦师亦友,共闯江湖:李莲花方多病的神仙友谊
从天下第一到江湖游医:李莲花的坚韧人生
演技尴尬!《清明上河图密码》口碑逆转,张颂文演技被周一围吊打
定了!武汉又一千亿级产业来了
《甄嬛传》里的宫女生活:从选拔到命运
事实证明,广东人最自豪的不是经济,而是把传统习俗保留下来了
福州鳌峰学校试点厕所报警器:科技助力校园安全新探索
校园欺凌:从个案到防治——邯郸初中生被害案引发的思考
如何撰写辞职电子邮件信(附样本格式)
如何撰写辞职电子邮件信(附样本格式)
系统性红斑狼疮(SLE):症状、诊断与治疗全攻略
“五谷之首”小米的养生之道:三种经典食谱详解
秋季养生首选小米粥:传统功效遇上创意搭配
桂林阳朔动车攻略:最快22分钟,票价仅99元起
田震:从“摔话筒”到澳大利亚,一个歌手的坚韧人生
香菇抗癌有科学依据,多糖成分可抑制肿瘤生长
每天食用半碗菇,癌症风险降低45%:专家解析菇类抗癌功效
肉苁蓉:冬季养生的“沙漠人参”,五重功效助你御寒强体
冬季养生用肉苁蓉,三种方法功效好
莲花楼台词热议:从江湖恩怨到人生哲理的文化传承
提酒而来,幸尽而去:莲花楼里的江湖智慧与现代人生活启示
“那高处去过,没意思”:李相夷的江湖解脱之路
曾舜晞等主演分享《莲花楼》经典台词
呼伦贝尔到漠河北极村旅行团队7日游
阿勒泰追极光,年轻人又省了三四万
心理学家:喜欢把“谢谢”挂在嘴边的人,多半就3种人
2025年最新汽车以旧换新政策,对二手车的影响
田子坊到迪士尼,上海5大景点寄存点实用信息
珍妃井:慈禧下令处死珍妃的历史见证
北京友谊医院专家推荐:认知行为疗法缓解耳鸣焦虑