• js-DOM-页面元素的兼容性、常用事件、节点


    页面元素的兼容性:

    所谓的兼容性指的就是当前浏览器是否支持当前对象的属性或是方法,如果支持就是兼容,如果不支持就是不兼容。

    举个例子:

    /**
    
     * 设置页面标签之间的文本内容的兼容性写法
    
     * @param obj
    
     * @param value
    
     */
    
    function setInnerText(obj,value){
    
        if(obj.innerText){
    
            obj.innerText = value;
    
        }else {
    
            obj.textContent = value;
    
        }
    
    }
    
    var txt ={   //将与文本相关的封装到一个对象当中,之前的函数就是现在的对象的方法
    
        getInnerText: function(obj){
    
            if(obj.innerText){  //IE8及之前的早期浏览器版本支持的
    
                return   obj.innerText;
    
            }else {
    
                return   obj.textContent; // 火狐早期版本支持的
    
            }
    
        },
    
        setInnerText:function(obj,value){
    
            if(obj.innerText){
    
                obj.innerText = value;
    
            }else {
    
                obj.textContent = value;
    
            }
    
        }
    
    };

    常用事件小结及页面元素属性的设置:

    常用事件:onclick  鼠标单击

              ondblclick 鼠标双击

              onkeyup  按下并释放键盘上面的一个键时触发

              onchange 文本内容或下拉菜单中的内容发生改变时触发

              onfocus   获得焦点,表示文本等获得鼠标光标

              onblur    失去焦点,表示文本框等失去鼠标光标

              onmouseover 鼠标悬停,鼠标停留在图片上方等

              onmouseout 鼠标移出,离开所在图片的区域

              onload      网页文档加载时间

              onunload      关闭网页时

              onsubmit   表单提交时

    元素属性的设置与改变:

    文本框的禁用:

    <input type="text" value="请输入一个值:" id="txt"/>

    (事件省略) 当txt.disable=true;时文本框被禁用;当txt.disable=false;时文本框被解除禁用。

    获得把文本框的焦点时:

    文本框背景颜色的设置: txt.style.backgroundColor=颜色;

          边框颜色的设置: txt.style.borderColor=颜色;

    选择框(checkbox):

    var inputs=j_tb.getElementsByTagName("input");

    checked

    设置或返回 checkbox 是否应被选中

    当  inputs[i]..checked=true;表示被选中;当inputs[i].checked=false;时表示未被选中。

    自定义属性:

    <input type="text" class="ip" id="txt" value="123" aa="258"/>

    <script>

        var txt = document.getElementById("txt");

        txt.mm = "258";  // 这里可以通过 JS来设置自定义属性的

        console.log(txt.type);

        console.log(txt.id);

        console.log(txt.value);

        console.log(txt.aa);   // JS只能获取标签对象的原有属性,无法获得自定义属性

        console.log(txt.mm);   //此处可以获得js设置的自定义属性

    // 通过对象.的方式是无法获得标签 元素的自定义属性的

    </script>

    节点:

    节点的规定:DOM 是这样规定的:

    • 整个文档是一个文档节点
    • 每个 XML 标签是一个元素节点
    • 包含在 XML 元素中的文本是文本节点
    • 每一个 XML 属性是一个属性节点
    • 注释属于注释节点
    <div class="box" id="box">
    
        <ul id="ul">
    
            <li>1111</li>
    
            <li>2222</li>
    
            <li id="li">3333</li>
    
            <li>4444</li>
    
        </ul>
    
    </div>
     
    
    <script>
    var ul = document.getElementById("ul");
    
    console.log(ul.parentNode); //直接获得ul的父级元素节点
    var lis =  ul.childNodes;  // 获得所有的子节点,包括文本节点
    
     for(var i=0;i<lis.length;i++){
    
         console.log(lis[i]);
    
     }
    console.log(lis.length);   //长度为9
     
    var lis2 = ul.children;  // children只会获得ul内元素节点
    
    console.log(lis2.length);  //长度为4
    
    for(var i=0;i<lis2.length;i++){
    
        console.log(lis2[i]);
    
    }
     
    </script>

    nodeTypes - 有名常数,nodeName与 nodeValue属性返回的值:

    标签(ELEMENT_NODE)的节点类型是 1;

                             节点的名字是:对应的标签名字

                             标签的节点值:null

    属性(ATTRIBUTE_NODE)的节点类型是:2;

                              它的名字是:属性名;

                             它的节点值是:属性值;

    文本(TEXT_NODE)的节点类型是:3

                    它的名字是:#text

                     他的值是:文本的内容。(无内容就为空)

    兄弟节点:

    <div class="box" id="box">
    
        <ul id="ul">
    
            <li>1111</li>
    
            <li>2222</li>
    
            <li id="li">3333</li>
    
            <li>4444</li>
    
        </ul>
    
    </div>
     
    
    <script>
    var li = document.getElementById("li");
    
    console.log(li.nextSibling);  // 下一个紧邻节点,chrome 火狐都支持的,只不过呢,有可能 会获得文本节点,IE8及之前的浏览器会忽略空白文本节点,如果文本有内容,也会获得到
    
    console.log(li.nextElementSibling);// 谷歌和火狐都可以获得下一个紧邻的元素节点,而IE8及之前的版本不支持
    
    console.log(li.previousSibling);// 上一个紧邻节点,chrome 火狐都支持的,只不过呢,有可能 会获得文本节点,IE8及之前的浏览器会忽略空白文本节点,如果文本有内容,也会获得到
    
    console.log(li.previousElementSibling);// 谷歌和火狐都可以获得下一个紧邻的元素节点,而IE8及之前的版本不支持
    </script>
  • 相关阅读:
    用户界面线程(含有消息泵的线程)主线程与用户界面线程的通信
    poj 2151 Check the difficulty of problems 概率dp
    Codeforces 148D Bag of mice 概率dp
    [置顶] UVa在线比赛单题汇总DP专题
    UVa 10405 Longest Common Subsequence 最长公共子序列模板
    UVa 12018 Juice Extractor 切水果dp暂时存疑
    UVa 674 Coin Change 背包dp
    hdu 3853 LOOPS 圆环之理 概率dp
    UVa 111 History Grading 最长递增子序列 LIS
    UVa在线比赛单题汇总DP专题
  • 原文地址:https://www.cnblogs.com/xinjianheyi/p/5746804.html
Copyright © 2020-2023  润新知