DOM操作技术

214 阅读1分钟

1、动态脚步

创建动态脚步有两种方法:

1、插入外部文件;

funtion loadScript(url){
    let script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = url;
    document.body.apendChild(script);
}
loadScript('client.js');

缺点:不知道脚本什么时候加载完成。

2、直接插入javascript代码

function loadScriptStr(code){
    let script = document.createElement('script');
    script.type = 'text/javascript';
    try{
       script.appendChild(document.createTextNode(code)); 
    } catch{
        script.text = code;
    }
    document.body.apendChild(script);
}
loadScriptStr('function sayHi(){console.log('hi');}');

ie<script>视为一个特殊的元素,不允许DOM访问其子节点,提供text属性来指定。

2、动态样式

创建动态样式有两种方法:

1、插入外部文件;

funtion loadStyles(url){
    let link = document.createElement('link');
    link.type = 'text/css';
    link.href = url;
    document.head.apendChild(link);
}
loadStyles('main.css');

异步过程,缺点:不知道样式脚本什么时候加载完成。

2、直接插入style代码

function loadStylesStr(css){
    let style = document.createElement('style');
    try{
       style.appendChild(document.createTextNode(css)); 
    } catch(){
        style.styleSheet.cssText = css;
    }
   
    document.head.apendChild(style);
}
loadStylesStr('body:{color: #222;}');

ie<style>视为一个特殊的元素,不允许DOM访问其子节点,提供访问元素的styleSheet属性的cssText属性来接收css代码。

3、使用NodeList

NodeList及其NameNodeMap、HTMLCollention,这三个集合都是动态的。每当文档结构发生变化时,它们都会更新,始终保持着最新、最准确的信息。本质上NodeList对象都是在访问DOM文档时实时运行的查询。

尽量减少访问NodeList对象的次数,因为每次访问都会运行一次基于文档的查询,可以考虑将NodeList中取的值缓存起来