JavaScript DOM操作技术

JavaScript DOM操作技术

一、动态脚本

    动态脚本指的是:不是预先写在HTML页面上的,而是在将来某一时刻通过修改DOM动态添加的脚本。

    创建动态脚本的两种方式:引入外部src文件或者直接插入JavaScript代码。

1、引入外部文件

<script type="text/javascript" src="file.js">  </script>  //HTML代码

//以下为HTML代码对应的DOM代码,封装在函数中
funciton loadScript(url){
    var script =document.createElement("script"); //创建script节点
    script.type="text/script";          //为元素添加特性
    script.src=url;
    document.body.appendChild(script);    //将元素添加到body中
}

loadScript("file.js");//通过调用此函数来加载JS文件

2、行内方式

以下为在HTML中以行内方式插入js代码

<script type="text/javascript">
    funciton sayHi(){
        alert("Hi!")
      }
</script>

以下为对应的DOM代码:

其中:①首先try给script元素创建文本节点的方式,把代码添加到script元素中去,但是IE不允许DOM访问script的子节点。所以如果是IE浏览器,就会跳到catch,执行catch中的代码。由于IE可以访问script的text属性,所以可通过script.text来指定JS代码

function loadScriptString(code){        //将代码封装在函数中
    var script = document.createElement("script");  //创建script节点
    script.type = "text/javascript";     //为节点添加特性
    try{
        script.appendChild(document.createTextNode(code));  //①
       }catch(ex){
        script.text = code;        //②
       }
    document.body.appendChild(script);    //将结点添加到body中
}

loadScriptString("function sayHi( ) {alert("Hi!");}");  //对函数的调用

二、动态样式

    把CSS样式包含到HTML页面中,而动态样式是在页面加载完成后动态添加到页面中的。

1、通过link链入外部css文档

<link rel="stylesheet" type="text/css" href="styles.css"> //HTMML添加动态样式代码

//以下为通过DOM添加CSS样式
function loadStyles(url){
    var link = document.createElement("link");
    link.rel = "stylesheet";
    link.type = "text/css";
    link.href = url;
    var head = document.getElementByTagName("head");
    head.appendChild("link");
}

loadStyles.(styles.css);    //调用此函数,将CSS样式加载到HTML中

2、通过style元素嵌入CSS样式

以下为在HTML中嵌入CSS的代码,<style>标签对需写在<head>标签对中。

<style type="text/css">
body{
    color:red;
}
</style>

以下为上面的嵌入CSS代码所对应的DOM代码:

①首先尝试常规方法,为style添加文本节点来添加样式。②由于IE不允许访问style的子节点,所以使用了try...catch,而IE允许访问元素的styleSheet属性,而这个属性有一个cssText属性,所以在IE中可以通过style.styleSheet.cssText来添加CSS代码

funciton loadStyleString(css){    //将功能封装到函数中,css参数为样式代码
    var style = createElement("style");    //创建style元素
    style.type = "text/css";    //为style添加特性
    try{
        style.appendChild(document.createTextNode(css));   //①
    }catch(ex){
        style.styleSheet.cssText = css;    //②
    }
    var head = document.getElementByTagName("head")[0];    //获取第一个head
    head.appendChild("style");    //将style添加到head中
}

//以下是调用此函数来为HTML添加CSS样式
loadStyleString("body{color:red;}");

三、操作表格

    表格有很多属性,在这不一 一例举,以下面的代码为例来解释如何使用这些属性创建表格

var table = document.createElement("table");//创建table元素
table.border = 1;
table.width = 100%;

var tbody = doucument.createElement("tbody");//创建tbody
table.appendChild("tbody");//将tbody加入body中

tbody.insertRow(0);//插入第一行
tbody.rows[0].insertCell(0);//插入第一行第一列
tbody.rows[0].cells[0].appendChild("document.createElementTextNode("DATA1")");//为第一行第一列加入数据

document.body.appendChild(table);//把table添加到body中

四、使用NodeList 

    NodeList是动态的,和NamedNodeMap、HTMLCollection一样。所有NodeList对象都是在访问DOM文档实时运行的查询。因此,在循环中,需将length赋给一个初始化,而不是直接作为判断条件,否则可能会陷入死循环,同时减少对NodeList的使用,因为开销大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值