编辑器

加入公司的第一个工作任务就是把编辑器增加个按钮对接腾讯文档, 纯 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 被删掉了

  1. 直接设置style的属性 某些情况用这个设置 !important值无效

如果属性有'-'号,就写成驼峰的形式(如textAlign) 如果想保留 - 号,就中括号的形式 element.style['text-align'] = '100px';

element.style.height = '100px'; 2. 直接设置属性(只能用于某些属性,相关样式会自动识别)

element.setAttribute('height', 100);
element.setAttribute('height', '100px');
  1. 直接设置style的属性 某些情况用这个设置 !important值无效

如果属性有'-'号,就写成驼峰的形式(如textAlign) 如果想保留 - 号,就中括号的形式

element.style['text-align'] = '100px';

element.style.height = '100px';
  1. 直接设置属性(只能用于某些属性,相关样式会自动识别)

element.setAttribute('height', 100);
element.setAttribute('height', '100px');
  1. 设置style的属性

element.setAttribute('style', 'height: 100px !important');
  1. 使用setProperty 如果要设置!important,推荐用这种方法设置第三个参数

element.style.setProperty('height', '300px', 'important');
  1. 改变class 比如JQ的更改class相关方法

因JS获取不到css的伪元素,所以可以通过改变伪元素父级的class来动态更改伪元素的样式

element.className = 'blue';
element.className += 'blue fb';
  1. 设置cssText

element.style.cssText = 'height: 100px !important';
element.style.cssText += 'height: 100px !important';

兼容性

难点

处理的bug

最后更新于

这有帮助吗?