zoukankan      html  css  js  c++  java
  • dom学习要点

    Dom操作

    1.文本内容操作

    - innerText:操作文本

    - innerHtml:操作全内容

    //innerText标签:
    <div id='i2' ><a>土味程序员</a></div>
    
    item=document.getElementById('i2');
    item.innerText;   结果:
    "土味程序员"

    item.innerHTML;   结果:"<a>土味程序员</a>"

      innerText的作用是获取文本内容,而innerHTML的作用则连标签一起获取(全内容)。

      赋值的方式item.innerText="程序员";item.innerHTML="<p>程序员</p>";

      注意innerHTML可以修改标签。

    - value:

    • input :获取当前标签的值
    • select:获取选中的value值
      select:获取选中的value值
    • textarea:获取当前标签值
    //input 标签,获取input标签中文本框输入的值,同时也可以赋值;
    <input id=​"i1" type=​"text" value=​"user">​
    
    item=document.getElementById("i1");
    
    item.value;
        "wag"
    item.value="程序员";
        "程序员"
    
    //select标签selectedIndex;则是获取逻辑顺序;
    item=document.getElementById("i2");
    <select id=​"i2"><option value=​"11">​北京​</option>​
        <option value=​"12">​上海​</option>​
        <option value=​"13">​福州​</option>​
    </select>​
    item.value;
        结果:"13"
    item.value;
        结果 :"11"
    item.value=13;
    
    item.selectedIndex;
        结果:2
    item.selectedIndex;
        结果:0
    
    //textarea标签
    item=document.getElementById("i3")
    <textarea id=​"i3">​ndioansdian</textarea>​
    item.value;
        结果: "ndioansdian"
    item.value="chengxuyuan";
        结果"chengxuyuan"

    例子:请输入关键字;

    <div>
        <input id ='i1' type="text" onfocus="Focus();"  onblur="Blur();"  value="请输入关键字" />
    </div>
    <script type="text/javascript">
        function Focus()
        {
            item=document.getElementById("i1");
            if(item.value=="请输入关键字")
            {
                item.value="";
            }  
        }
        function Blur(){
            item=document.getElementById("i1");
            if(item.value.length==0)
            {
                item.value="请输入关键字";
            }  
    
        }
    </script>
    View Code

     2.样式操作:

    - classList 样式级操作

     - classList.add(class)

     - classList.Remove(class)

    - style属性级操作

    两种方式都可以操作属性,classList用于操作量级大于style,蒙蔽?请看以下例子(控制台console操作执行)

    //classList操作
    <div id=​"i2" class=​"c1 c2 " style=​"font-size:​35px;​">​土味程序员</div>​
    item = document.getElementById("i2");
    item.classList;
        结果:DOMTokenList(2) ["c1", "c2", value: "c1 c2 "]
    item.classList.add("c3");
        结果:undefined
    item.classList;
        结果:DOMTokenList(3) ["c1", "c2", "c3", value: "c1 c2 c3"]
    item.classList.remove("c3");
        结果:undefined
    item.classList;
        结果:DOMTokenList(2) ["c1", "c2", value: "c1 c2"]
    
    //style操作
    item.style.color="red";
       结果:"red"
    item.style.color="blue";
       结果:"blue"
    item.style.fontSize="16px";
       结果:"16px"
    //需要注意的是在html中字体大小的写法是:font-size;而在javascript中则是fontSize;

    3.属性操作 

    - attribute 

     - setAttribute 为标签添加某个属性,没有该属性则创建该属性

     - removeAttribute 删除标签的某个属性

     - attributes 查询标签的所有属性

     请看例子:

    item=document.getElementById("i2");
        输出:<div id=​"i2" class=​"c1 c2 " style=​"font-size:​40px;​">​土味程序员​</div>​
    item.removeAttribute("style");
        输出:undefined
    item;
    <div id=​"i2" class=​"c1 c2 ">​土味程序员​</div>​
        输出:item.setAttribute("style","color:blue;")
    undefined
    item;
        输出:<div id=​"i2" class=​"c1 c2 " style=​"color:​blue;​">​土味程序员​</div>​
    item.attributes;
        输出:NamedNodeMap {0: id, 1: class, 2: style, id: id, class: class, style: style, length: 3}

      属性包括:id,class,style,value,name......

    4.标签的创建

    标签的创建一般有以下两种形式:字符串创建和对象创建两种方式

    - 字符串方式

      字符串创建方式:标签字符串tag=;

      插入方式位置有以下四种方式,如图:

      - insertAdjacentHTML();方法

    - 对象方式

     - document.createElement('标签名');创建标签

     - document.appendChild('标签名');插入某个标签

        <input type="button" name="create" value="创建标签" onclick="create_tag();" />
    
        <div id ="i1">
    
            <input type="text" />
        </div>
    
    <script type="text/javascript">
        function create_tag(){
            //创建input标签
            var tag=document.createElement("input");
            //为input标签,添加text属性
            tag.setAttribute('type','text');
            //为input标签添加属性字体大小为16px;
            tag.style.fontSize ='16px';
            //创建标签P标签
            var p=document.createElement("p");
            //包裹tag标签
            p.appendChild(tag);
            //为input标签包裹一层P标签
            document.getElementById("i1").appendChild(p);
        }

     5.提交表单

      任何标签都可以通过JavaScript 来提交表单。

    <body>
        <form id ="f1" action="http://www.baidu.com">
            <!-- a标签 -->
            <a onclick="submitFrom();">我是a</a>
            <!-- div标签 -->
            <div onclick = "submitFrom();">我是div</div>
        </form>
    
        <script type="text/javascript">
            function submitFrom(){
                //提交表单
                item=document.getElementById("f1").submit();
            }
        </script>
    </body>

     6.其他

     - console.log();输出框

     - alert();弹出框

     - confirm(“真的需要删除吗”);true fasle;确认框

     - location

      - locaiont.href;获取当前页面的ual

      - location.href = " ";重定向,跳转

      - location.href = location.href; 页面刷新 

      - location.href =location.reload();页面刷新

     7.事件操作

      事件操作一般有以下几种方式:

      1.直接标签绑定方式

    <div id ='i1'>
            <input type='text' />
        </div>
        <table id ='i2'>
            <thead>
                <tr>
                    <th id ='i3' onmouseover="MouseOver('i3');" onmouseout="Mouseout('i3');">h</th>
                    <th id ='i4' onmouseover="MouseOver('i4');" onmouseout="Mouseout('i4');">h</th>
                    <th id ='i5' onmouseover="MouseOver('i5');" onmouseout="Mouseout('i5');">h</th>
                </tr>
            </thead>
        </table>
        <script>
            function MouseOver(id)
            {
                item=document.getElementById(id);
                item.style.backgroundColor = "red";
            }
            function Mouseout(id)
            {
    
                item=document.getElementById(id);
                console.log(item);
                item.style.backgroundColor = "";  
            }
        </script>

      2.先获取Dom对象,然后进行绑定

        <div id ='i1'>
            <input type='text' />
        </div>
        <table id ='i2'>
            <thead>
                <tr>
                    <th>w</th>
                    <th>w</th>
                    <th>w</th>
                </tr>
            </thead>
        </table>
    
        <script>
            item=document.getElementById("i2");
            //获取要修改的对象
            child_tag = item.children[0].children[0].children;
            console.log(child_tag);
            for(var i=0;i<child_tag.length;i++)
            {
               //onmouseover事件,光标放在指定标签时,触发
               child_tag[i].onmouseover=function(){
                    //谁调用onmouserover,this就指向谁
                    this.style.backgroundColor ="red";
               }
            }
            for(var i=0;i<child_tag.length;i++)
            {
                //onmouseout事件,光标离开该标签时,触发
                child_tag[i].onmouseout=function(){
                    this.style.backgroundColor ="" ;    
                }
            }
        </script>          

      上述代码中this有两种绑定方式:

      方法1

    <div>
        <input type="button" onclick="clickOn(this)" />
    </div>
    <script>
        function clickOn(self){
           //self 代指当前点击的标签
        }   
    </script>
     

      方法2

    <input type='button' id='i1' />
    <script type="text/javascript">
        document.getElementById("i1").conlick=
        fucntion(){
            //this 代指当前标签。。
        };
    </script> 

      3.通过addEventListener函数绑定

    <div id='mymain' >
    
        <div id ='mycontent'>
            土味程序员    
        </div> 
    </div>  
    
    <script>
        main = document.getElementById('mymain');
        content= document.getElementById('mycontent');
    
        main.addEventListener("click",function(){console.log('main');},false);
        content.addEventListener("click",function(){console.log('mycontent');},false);     
    
    </script>

      使用addEventListener函数来添加事件,第一个参数是事件,第二个参数是匿名函数,第三个参数是用做(冒泡/捕捉)的选择。默认是:false捕捉。

      如果点击标签《土味程序员》,先打印‘main’后打印‘mycontent’ ,如果第三个参数为true,则先打印‘mycontent’后打印‘main’。

  • 相关阅读:
    构造函数模式知识的扩展
    JavaScript 创建对象之单例、工厂、构造函数模式
    javaScript 计算两个日期的天数相差
    类似购物车循环判断方法
    spring的@Transactional注解详细用法
    String.getBytes()方法中的中文编码问题(转)
    spring 定时任务的 执行时间设置规则-----看完这篇就懂了
    为什么说Redis是单线程的?
    你应该知道的 RPC 原理
    关系型数据库与NoSQL的对比
  • 原文地址:https://www.cnblogs.com/wangxingwei/p/10496834.html
Copyright © 2011-2022 走看看