DOM扩展——笔记

NodeList
    NodeList代表一个有顺序的节点列表
NamedNodeMap
    NamedNodeMap代表一个无顺序的节点列表
HTMLcollection
    HTMLCollection 是一个接口,表示  HTML 标准通用标记语言 下的一个应用) 元素的集合,它提供了可以遍历列表的方法和        属性。
    HTML DOM 中的 HTMLCollection 是“活”的;如果基本的文档改变时,那些改变通过所有 HTMLCollection 对象会立即显示出来。
例如
    var divs=document.getElementsByTagname('div');     //取得所以div的 HTMLCollection;
    var i,div;
    for(i=0;i<divs.length;i++)
    {
        div=document.createElement('div');
        document.body.appendChild(div);
    }
*  这样会产生死循环,因为NodeList,NamedNodeMap,HTMLCollection三个对象在文档变化的时候也会跟着更新,因此divs.length在不断的变化,如果想要正常得迭代Nodelist的话应在刚开始就把divs.length初始化第二变量
    var divs=document.getElementsByTagName('div');
    var i,div,len;
    for(i=0,len=divs.length;i<len;i++)
    {
        div=document.createElement('div');
        document.body.appendChild(div);
    }




1.动态脚本
var script=document.createElement("script");
script.type="text/javascript";
script.appendChild(document.createTextNode("function syaHi(){alert(''hi);}"));
document.body.appendChild(script);
*动态添加脚本无法知道是否已经load;
*以上代码在IE无效,在IE浏览器,js代码必须用text属性添加
例如
function loadScriptString(code)
{
    var script=document.createElement("script");
    script.type="text/javascript";
    try
    {
        script.appendChild(document.createTextNode(code));
    }
    catch(e)
    {
         script.text=code;  //兼容IE
    }
    document.body.appendChild(script);
}
调用函数示例
loadScripgString("function sayHi(){alert('hi');}");

2.动态样式
function loadStyleString(css)
{
    var style=document.createElement('style');
    style.type="text/css";
    try
    {
        style.appendChild(document.createTextNode(css));     //SF FF CH
    }
    catch(e)
    {
        style.styleSheet.cssText=css;         //IE
    }
    var head=document.getElementsByTagName('head')[0];
    head.appendChild(style);
}

选择符API

querySelector()   
返回css选择符的第一个元素,没找到返回null

querySelectorAll()  
返回css选择符找到的nodelist,没找到返回空的nodelist

matchesSelector()
这个方法是Element类型新增方法,接收一个参数,如果调用元素与该选择符匹配,返回true,否则返回false
例如:
if(document.body.matchesSelector('body.page'))
{
    //true;
}

元素遍历
    对于元素间的空格,IE9及之前版本不会返回文本节点,而其他所有浏览器会放回文本节点,这样导致在使用childNodes和    firstChild等属性时的行为不一致,因此Element Traversal规范新定义了一组属性
    
    childElementCount:返回子元素(不包括文本节点和注释)的个数
    firstElementChild:指向第一个子元素:firstChild的元素版
    lastElementChidl:指向最后一个子元素:lastChild的元素版
    previousElementSibling:指向前一个同辈元素;previousSibling的元素版
    nextElementSibling:指向后一个同辈元素;nextSlibling的元素版


HTML5(DOM相关内容)
1.与类相关的扩充
    -getElementByClassName();  元素的类选择器,性能有优势。可传多个类名(‘class1 class2’),先后无影响
    -classList属性  对class进行添加,删除,是DOMTokenList的实例,有length属性,可以用item()跟[]取得对应的元素,还有以下方法
            -add(value)   添加给定字符串到列表,如果存在不添加
            -contains(value)   如果有value存在返回true
            -remove(value)   如果有value,移除
            -toggle(value)   如果列表有value,移除他,如果没有value,添加他。

2.焦点管理
    -document.activeElement属性 ,该属性始终会引用焦点元素
            例如:document.getElementById('mybutton').focus();
                      if(document.activeElement==button)   //true;
    -hasFocus()方法  确认文档是否获得焦点
 

3.HTMLDocument变化
    -document.readyState属性,新增。  返回loading是正在加载,返回complete是已经加载完 
    -document.head   直接引用<head>
            例如:var head=document.head || document.getElementsByTagName('head');
    -document.charset  字符集属性            //浏览器全部支持
    -defaultCharset  浏览器和系统默认的字符集设置   //FF 不支持
            例如  alert(document.charset);   //"utf-8"     document.charset="gbk13" 
                     if(document.charset==document.defaultCharset)
                    {
                            //true;
                    }
    -自定义数据属性  必须加data-,为了表示于元素渲染无关
            例如 <div id="mydiv"  data-num=1></div>
                    var div=document.getElementById('mydiv');
                    //获取自定义数据属性
                    var g=div.dataset.num;
                    //设置自定义数据属性
                    div.dataset.num=3;
                    //有没有num属性
                    if(div.dataset.num)  














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值