- Published on
JavaScript基础回顾
- Authors

- Name
- Nix Echo
- @Nix_Echo
Document对象
HTMLCollection 是 HTML 元素的集合,NodeList 是一个文档节点的集合。
- document.activeElement:返回当前获取焦点元素
document.activeElement;
- document.addEventListener():向文档添加句柄
document.addEventListener('click', function () {
...
});
- document.createAttribute():创建一个属性节点
let attr = document.createAttribute('data-value');
attr.value = 'true';
document.getElementById("p").setAttributeNode(attr);
- document.createComment():创建注释节点
let common = document.createComment('ddd');
document.getElementById('content').appendChild(common);
- document.createElement():创建元素节点
let p = document.createElement('p');
p.innerText = 2 ;
- document.createTextNode():创建文本节点
let p = document.createElement('p');
let text = document.createTextNode('文本');
p.appendChild(text);
- document.images:返回对文档中所有 Image 对象引用
document.images; // HTMLCollection
- document.querySelector():返回文档中匹配指定的CSS选择器的第一元素
document.querySelector(".pp"); // 第一个节点
- document.querySelectorAll():返回文档中匹配的CSS选择器的所有元素节点列表
document.querySelector(".pp"); //所有节点
- document.write():向文档写HTML表达式或JavaScript代码
document.write("<h1>Hello World!</h1><p>Have a nice day!</p>");
Dom元素对象
document.addEventListener(event, function, useCapture)函数中,useCapture指定事件是否 在捕获或冒泡阶段执行,默认false 关闭冒泡。
- element.addEventListener():向指定元素添加事件句柄
document.getElementById("a").addEventListener('click',function(){
...
})
- element.removeEventListener(): 移除添加的句柄事件
- element.appendChild():为元素添加一个新的子元素
let ele = document.getElementById('div');
let newEle = document.createElement('p');
let attr = document.createAttribute('name');
attr.value = 'age';
newEle.setAttribute('data-value', 'true');
newEle.setAttributeNode(attr);
ele.appendChild(newEle);
- element.attributes:返回一个元素的属性数组
let newEle = document.createElement('p');
let attr = document.createAttribute('name');
attr.value = 'age';
newEle.setAttribute('data-value', 'true');
newEle.setAttributeNode(attr);
console.log(newEle.attributes);
- element.children:返回元素的子元素的集合(HTMLCollection)
// HTMLCollection集合转为数组格式
Array.from(document.getElemntById("div").children);
[...document.getElemntById("div").children];
- element.classList:返回元素的类名,作为 DOMTokenList 对象(DOMTokenList)
[...document.getElemntById("div").classList];
1. document.getElemntById("div").classList.add("class"); //增加类
2. document.getElemntById("div").classList.contains("class"); // 是否存在指定类
3. document.getElemntById("div").classList.remove("cla1",,); // 移除指定类 多个类以逗号分开
4. document.getElemntById("div").classList.toggle("cla1",true/false); // 在元素中切换类名
- element.className:设置或返回元素的class属性
document.getElemntById("div").className.cinludes("cls");
- element.cloneNode():克隆某个元素(同JQ中clone()函数)
document.getElemntById("div").cloneNode(); // 复制Dom
- element.contentEditable:设置或返回元素的内容是否可编辑(contenteditable属性)
let p = document.getElementById('p');
p.contentEditable = true; // 设置可编辑属性为true
console.log(p.getAttribute('contenteditable')); // 输出可编辑属性为true
p.setAttribute('contenteditable', false); //关闭可编辑属性
let att = document.createAttribute('contenteditable'); // 创建可编辑属性
att.value = true;
p.setAttributeNode(att); // 重新设置可编辑为true
let text = document.createTextNode('1234'); // 创建文本节点
p.appendChild(text); //文本节点内容追加于原文本之后
let common = document.createComment('注解内容');
p.appendChild(common);
let span = document.createElement('span'); //创建span标签
span.innerHTML = '<strong>世界 你好!</strong>';
p.appendChild(span);
p.removeAttribute('contenteditable');
- element.firstChild:返回元素的第一个子节点
document.getElementsByClassName("pp").firstChild;
- element.hasAttribute():如果元素中存在指定的属性返回 true,否则返回false
document.getElementsByClassName("pp").hasAttribute("name");
- element.hasFocus():返回布尔值,检测文档或元素是否获取焦点
document.getElementsById("div").hasFocus();
- element.lastChild:返回最后一个子节点
document.getElementsByClassName("pp").lastChild();
- element.nodeName:返回元素的标记名(大写)
document.getElemntById("div").nodeNmae; // DIV
- element.removeAttribute():从元素中删除指定的属性
document.getElementById("div").removeAttribute("name");
DOM 事件
鼠标事件
函数方法中存在event事件变量,包含鼠标点击信息
- oncontextmenu :在用户点击鼠标右键打开上下文菜单时触发
- onmousedown :鼠标按钮被按下
- onmouseup : 鼠标按键被松开
- onmouseover :鼠标移到某元素之上(支持冒泡)
- onmouseout : 鼠标从某元素移开(支持冒泡)
- onmouseenter : 当鼠标指针移动到元素上时触发(不支持冒泡)
- onmouseleave : 当鼠标指针移出元素时触发(不支持冒泡)
- onmousemove : 鼠标移动触发
- onwheel:该事件在鼠标滚轮在元素上下滚动时触发
键盘事件
- onkeypress:某个键盘按键被按下并松开
- onkeydown:某个键盘按键被按下(监听事件使用)
- onkeyup:某个键盘按键被松开
表单事件
- onfocus:聚焦时间(不支持冒泡)
- onblur:失焦事件(不支持冒泡)
- onfocusin:元素即将获取焦点时触发(支持冒泡)
- onfocusout:元素即将失去焦点时触发(支持冒泡)
// #form form表单
// 1. 不支持冒泡
document.getElementById('form').onfocus = function () {
console.log('不冒泡');
};
// 2. 不支持冒泡
document.getElementById('form').addEventListener('focus', function () {
console.log('不支持冒泡2');
});
// 3. 支持冒泡
document.getElementById('form').addEventListener('focusin', function () {
console.log('支持冒泡2');
});
// 4. 支持冒泡
document.getElementById('form').addEventListener(
'focus',
function () {
console.log('支持冒泡3');
},
true
);
- oninput: 元素获取用户输入时触发
- onselect:用户选择文本(input,textarea)
剪贴板事件
- oncopy:该事件在用户拷贝元素内容时触发
- oncut:该事件在用户剪切元素内容时触发
- onpaste:该事件在用户粘贴元素内容时触发
事件属性
- bubbles :返回布尔值 事件是否起泡类型
- target : 触发事件的元素
- type : 当前对象事件名称
事件方法
- event.stopPropagation():阻止事件冒泡
- event.preventDefault(): 阻止默认事件
Console对象
- console.group():在控制台创建一个信息分组。以 console.group() 开始,console.groupEnd() 结束
- cosnole.trace(): 显示当前执行的代码在堆栈中的调用路径
- console.table(tabledata,tablecolumns): 输出表格信息.第一个参数必须,数组或对象格式
var site1 = { name : "Runoob", site : "www.runoob.com" }
var site2 = { name : "Google", site : "www.google.com" }
var site3 = { name : "Taobao", site : "www.taobao.com" }
console.table([site1, site2, site3]);
- console.time(): 计时器,开始计时间,与 timeEnd() 联合使用,用于算出一个操作所花费的准确时间
console.time('Runoob');
for (i = 0; i < 100000; i++) {
// 代码部分
}
console.timeEnd('Runoob');
JavaScript 闭包
自调用函数会自调用立即执行 闭包是一种保护私有变量的机制,在函数执行时形成私有的作用域,保护里面的私有变量不受外界干扰。
let add = (function () {
let co = 1;
console.log(1);
return function () {
return (co += 1);
};
})();