dom工具库codingWeb.js,封装与总结
2023-09-11 14:22:30 时间
对一些常用的dom操作的和js操作的封装:
如:ajax,jsonp,dom节点,。。。。。
部分代码如下:
//设置,改, 删除
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + exdays*24*60*60*1000 );
var expires = "expires="+d.toUTCString();
document.cookie = cname+"="+cvalue+";"+expires+";path=/";
}
function getCookie(cname) {
//Hm_lvt_f801name=admin
//passw77df4b25b2662225b26a02a32ab8=1577930187
//userord=123456999
var name = cname+"="; // username=
var ca= document.cookie.split(';');
var len = ca.length;
for(var i=0; i<len; i++){
//username=admin
var c=ca[i].trim();
if(c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return '';
}
//操作内容, 兼容的方法
function inText(obj, value) {
//IE或非IE高版本
if(document.all) {
if(typeof(value)=="undefined") {
return obj.innerText;
}else{
obj.innerText = value;
}
}else{
if(typeof(value)=="undefined") {
return obj.textContent;
}else{
obj.textContent = value;
}
}
}
//通过URL获取文件
//http://localhost:63342/01/img/on.png
function getUrlName(url){
var l = url.lastIndexOf("/")+1;
var filename = url.substring(l);
return filename;
}
/*
* 添加类样式 addClass()
* element 必须有的参数, 设置类样式的元素
* value 类名, 元素添加的类名, 如果这个元素已经设置这个类了, 就不再设置, 如果没有设置过任何类, 就新加一个, 如果,
*
* */
function addClass(element, value) {
if(!element.className){
element.className= value;
}else {
if(element.className.indexOf(value)==-1) {
var src = element.className;
src += " ";
src += value;
element.className=src;
}
}
}
/*
删除类样式 delClass(element, value)
如果没有提供第二个参数,就删除所有的样式
如果元素中只有一个类样式, 直接删除一个就可以了
如果删除类中的一个成员
*/
function delClass(element, value) {
// one == one
if(typeof(value)=="undefined" || element.className==value) {
element.className = '';
}else {
// className = "one two three";
// classNames = [one, two, three]
var classNames = element.className.split(' ');
var str="";
for(var i=0; i<classNames.length; i++) {
if(classNames[i]!=value) {
str+= classNames[i];
str += " ";
}
}
str = str.trim();
element.className=str;
}
}
//通过类名获取所有元素的方法
function gclass(className, tagName) {
// var alltags = document.all;
var alltags = document.getElementsByTagName(tagName || "*");
var arr=new Array();
for(let i=0; i<alltags.length; i++) {
// one two
var one = className.split(" ");
var two = alltags[i].className.split(" ");
if(isHasArray(one, two)) {
arr[arr.length] = alltags[i];
}
}
//返回所有类元素集合
return arr;
}
// 判断一个数组中的所有元素是否在另外的一个数组中存在
function isHasArray(one, two) {
if(two.length < one.length)
{
return false;
}
var flag = 0;
for(let i=0; i<one.length; i++) {
for(let j=0; j<two.length; j++) {
if(one[i]==two[j]){
flag++;
break;
}
}
}
return flag == one.length;
}
//获取子节点
function childs(element) {
var nodes = element.childNodes;
var arr=new Array();
for(let i=0; i<nodes.length; i++) {
if(nodes[i].nodeType==1)
{
arr[arr.length] = nodes[i];
}
}
return arr;
}
// 获取第一个子节点
function cfrist(element) {
var node = element.firstChild;
while(node && node.nodeType!=1) {
node = node.nextSibling;
}
return node;
}
// 获取最后一个子节点
function clast(element) {
var node = element.lastChild;
while(node && node.nodeType!=1) {
node = node.previousSibling;
}
return node;
}
// 获取下一个兄弟节点
function cnext(element) {
var node = element.nextSibling;
while(node && node.nodeType!=1) {
node = node.nextSibling;
}
return node;
}
// 获取上一个兄弟节点
function cprev(element) {
var node = element.previousSibling;
while(node && node.nodeType!=1) {
node = node.previousSibling;
}
return node;
}
//获取当前节点后面所有的元素
function nextAll(element, tagName) {
var r = [];
for(var n = element.nextSibling; n; n=n.nextSibling) {
if(n.nodeType ==1) {
if(typeof(tagName)!="undefined") {
if(tagName.toUpperCase()==n.nodeName) {
r.push(n);
}
}else{
r.push(n);
}
}
}
return r;
}
//获取当前节点前面所有的元素
function prevAll(element, tagName) {
var r = [];
for(var n = element.previousSibling; n; n=n.previousSibling) {
if(n.nodeType ==1) {
if(typeof(tagName)!="undefined") {
if(tagName.toUpperCase()==n.nodeName) {
r.push(n);
}
}else{
r.push(n);
}
}
}
return r;
}
//获取所有同胞节点
function siblings(element, tagName) {
return prevAll(element, tagName).concat(nextAll(element, tagName));
}
// 获取定位元素到页面顶点的left
function offsetLeftAll(obj) {
var left = obj.offsetLeft;
var po = obj.offsetParent;
while(po != null) {
left += po.offsetLeft;
po = po.offsetParent;
}
return left;
}
// 获取定位元素到页面顶点的Top(不管定位元素的父元素是谁)
function offsetTopAll(obj) {
var top = obj.offsetTop;
var po = obj.offsetParent;
while(po != null) {
top += po.offsetTop;
po = po.offsetParent;
}
return top;
}
相关文章
- js 跨域
- js 异步请求封装
- vue - config(dev.env.js和prov.env.js)
- 【Js】前端使用xlsx.full.min.js读取和导出excel表格数据
- 【Vue/js】Js中执行变量中的命令语句,也就是所谓的宏替换(很实用的例子)
- js高级程序设计(十)DOM
- js原生实现轮播图效果(面向对象编程)
- 为JS系统内置对象添加自己封装的方法
- JS功能封装 - 小数四则运算精度丢失缺陷
- JS——offset偏移量及client可视区应用
- JS Leetcode 208. 实现 Trie (前缀树) 题解分析,第一次了解前缀树(字典树)
- js高手
- download.js (实例2)下载
- js指定元素滚动条回到0
- 拥抱 Node.js 8.0,N-API 入门极简例子
- JS高阶---对象创建模式(5种)
- js数组的at方法
- 有趣的HTML实例(十五) 注册登录界面(css+js)
- JS组件系列——封装自己的JS组件
- 浅析JS里的Intl对象及常用方法使用介绍
- 【Laya + TS + JS】SheetJS(js-xlsx)前端生成Excel表格
- Selenium2.0功能测试之WebDriver执行JS方法
- JS学习笔记-OO疑问之封装
- 原生js源码之bind方法,兼容性封装(IE8)
- JQuery/JS插件 linq.js 获取所有选中行的Id