加入公司的第一个工作任务就是把编辑器增加个按钮对接腾讯文档, 纯 js 书写方式, 所以针对可能遇到的 API 方法记录下。
getElementById
getElementsByTagName
getAttribute
setAttribute
这些方法都是dom-core 的组成部分
用法:
which.getAttribute("href");
var source = placeholder.setAttribute("src", "source")
一些传统的方法 document.write 和 innerHTML
document.write('<p>This is instered</p>')
新式的 appendChild 和 insertBefore
当需要把一大段HTML内容插入网页时, innerHTML 属性更适用, 一旦使用了innerHTML 属性,他的全部内容都将被替换。
document.createElement(nodeName)
docuemnt.createTextNode(text)
// 这是一个文本节点
document.createElement(n)
docuemnt.createTextNode("Hello world")
在已有元素前面插入一个新元素
insertBefore()
1. 新元素
2. 目标元素: 想把新元素插入到哪个元素(targetElement)之前
3. 父元素
parentElement.insertBefore(newElement, targetElement)
targetElement 元素的parentNode 属性
编写insertAfter 函数
function insertAfter(newElement, targetElment){
var parent = targetElement.parentNode;
if(parent.lastChild == targetElement){
parent.appendChild(newElement)
} else {
parent.insertBefore(newElement, targetElement.nextSibling)
}
}
文档里面的每个元素都是一个对象, 每个元素都有一个style 属性,它们也都是一个对象。
减号、和加号之类的操作符是保留字符,不允许用在函数或变量的名字里。
css样式属性的名字里有多少个连字符,dom 一律采用驼峰命名的方法表示
// 删除
var el = document.getElementById('div-02');
el.remove();
// id 为 'div-02' 的 div 被删掉了
直接设置style的属性 某些情况用这个设置 !important值无效
如果属性有'-'号,就写成驼峰的形式(如textAlign) 如果想保留 - 号,就中括号的形式 element.style['text-align'] = '100px';
element.style.height = '100px'; 2. 直接设置属性(只能用于某些属性,相关样式会自动识别)
element.setAttribute('height', 100);
element.setAttribute('height', '100px');
直接设置style的属性 某些情况用这个设置 !important值无效
如果属性有'-'号,就写成驼峰的形式(如textAlign) 如果想保留 - 号,就中括号的形式
element.style['text-align'] = '100px';
element.style.height = '100px';
直接设置属性(只能用于某些属性,相关样式会自动识别)
element.setAttribute('height', 100);
element.setAttribute('height', '100px');
element.setAttribute('style', 'height: 100px !important');
使用setProperty 如果要设置!important,推荐用这种方法设置第三个参数
element.style.setProperty('height', '300px', 'important');
因JS获取不到css的伪元素,所以可以通过改变伪元素父级的class来动态更改伪元素的样式
element.className = 'blue';
element.className += 'blue fb';
element.style.cssText = 'height: 100px !important';
element.style.cssText += 'height: 100px !important';
兼容性
难点
处理的bug