當今前端框架層出不窮,基本上都是數據驅動的思想,且移動端項目佔了很大市場,那麼咱們若是爲了操做dom方便就引入相似Jquery這樣的庫必然會使得咱們的項目體積增大,加載速度慢,因此們要儘量的使用原生js,但可能你們好長時間沒有使用過原生又以爲很陌生,今天咱們一塊兒來複習下經常使用的原生JS的寫法。javascript
document.querySelector(‘.xxx’); //class獲取
document.querySelector(‘#xxx’);//id獲取
document.querySelector(‘.xxx.ccc’);//同時包含xxx和ccc
document.querySelector(‘.xxx,.ccc’);//多選
document.querySelector(‘.xxx div’);//子類
document.querySelector(‘.xxx p:first-child’);//第一個P元素
複製代碼
el.classList.add(‘class_name’);
複製代碼
el.classList.remove(‘class_name’);
複製代碼
el.classList.toggle(‘class_name’);
複製代碼
el.classList.contains(‘class_name’);
複製代碼
以上class方法存在兼容性問題,由於他們是h5新特性,若是須要兼容咱們可使用以下方法 css
//是否包含class
function hasClass(o, n){
return new RegExp(‘\\b’+n+’\\b’).test(o.className);
};
//添加class
function addClass(o, n){
if(!hasClass(o, n)) o.className+=’ ‘+n;
};
//刪除class
function delClass(o, n){
if(hasClass(o, n)){
o.className = o.className.replace(new RegExp(‘(?:^|\\s)’+n+'(?=\\s|$)’), 」).replace(/^\s*|\s*$/g, 」);
};
};
複製代碼
parent.appendChild(el);
el.insertBefore(NewDom,ele);
複製代碼
ele.children;
複製代碼
var prev = ele.previousElementSibling || ele.previousSibling
複製代碼
var next = ele.nextElementSibling || ele.nextSibling
複製代碼
ele.parentNode
複製代碼
[].forEach.call(ele,function(el,i){
//xxx
});
複製代碼
ele.cloneNode(true)
複製代碼
var ele = document.createElement(‘div’);
複製代碼
parent.removeChild(ele);
複製代碼
ele.setAttribute(name,value);//設置
ele.getAttribute(name);//獲取
ele.removeAttribute(name);//刪除
複製代碼
ele.dataset.foo = 52 //設置
ele.dataset.foo //獲取
//也可經過attribute方法來設置獲取和刪除
ele.setAttribute(‘data-foo’, 52);//設置
ele.getAttribute(‘data-foo’); //獲取
ele.removeAttribute(‘data-foo’);//刪除
複製代碼
var html = ele.innerHTML;
複製代碼
el.innerHTML = "";
複製代碼
var txt = ele.textContent || ele.innerText
複製代碼
ele.style.height = ‘300px';
ele.style.cssText = ‘height:200px;color:red;left:100px;’
複製代碼
function getStyle(obj,attr){
if(obj.currentStyle){
return obj.currentStyle[attr];
}else{
return getComputedStyle(obj,null)[attr];
};
};
複製代碼
el.style.display = 」;
el.style.display = ‘none';
複製代碼
ele.clientHeight;
複製代碼
ele.offsetWidth;
複製代碼
function outerHeight(el){
var style = el.currentStyle || getComputedStyle(el);
var height = el.offsetHeight + parseInt(style.marginTop) + parseInt(style.marginBottom);
return height;
};
複製代碼
ele.offsetLeft;
ele.offsetTop;
ele.getBoundingClientRect().top
ele.getBoundingClientRect().bottom
ele.getBoundingClientRect().left
ele.getBoundingClientRect().right
複製代碼
document.addEventListener("DOMContentLoaded", function() {
// Code
},false);
複製代碼
document.addEventListener("load", function() {
// Code
},false);
複製代碼
document.addEventListener(「click」, function() {
//xxx
},false);
複製代碼
function type(obj){
return Object.prototype.toString.call(obj).replace(/^\[object (.+)\]$/, 「$1″).toLowerCase();
};
複製代碼
function isArray (v){
return Object.prototype.toString.call(v) === ‘[object Array]';
};
複製代碼
//去除兩端空格
String.prototype.trim = function() {
var reExtraSpace = /^\s*(.*?)\s+$/;
return this.replace(reExtraSpace, 「$1″)
}
複製代碼
以上就是咱們經常使用的js方法,但願你們能在項目中多多使用,牢記於心!html
若是大佬在文中發現了錯誤之處,請指正!前端