js操作DOM对象

Posted 我可不是隔壁的老王

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js操作DOM对象相关的知识,希望对你有一定的参考价值。

技术分享
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>访问节点</title>

    <!--
    DOM(Document Object Model) 文档对象模型
    HTML-DOM
    CSS-DOM
    XML-DOM

    DOM-CORE

    noteType的返回值:
    1 :元素节点
    2 :属性节点
    3 :文本节点
    8 :注释节点
    9 :文档节点


    -->
</head>
<body>

  <ul>
      <li>大家辛苦了1</li>
      <li>大家辛苦了2</li>
      <li>大家辛苦了3</li>
  </ul>

 <img src="../images/cat.jpg" alt="这是一只可爱的小猫咪"  id="cat">
  
  

<script type="text/javascript">
    //获取ul中的第一个li
   var ul= document.getElementsByTagName("ul")[0];
    //输出节点的名称
    document.write("ul节点的名称:"+ul.nodeName+"<br/>");
    document.write("ul节点的类型:"+ul.nodeType+"<br/>");
    document.write("ul节点的值:"+ul.nodeValue+"<br/>");
    // 01.获取ul中的第一个li  元素节点
    var li=ul.firstElementChild;
    document.write("li节点的名称:"+li.nodeName+"<br/>");
    document.write("li节点的类型:"+li.nodeType+"<br/>");
    document.write("li节点的值:"+li.nodeValue+"<br/>");

  //获取小猫咪
    var cat=document.getElementById("cat");
    document.write("img节点的名称:"+cat.nodeName+"<br/>");
    document.write("img节点的类型:"+cat.nodeType+"<br/>");
    document.write("img节点的值:"+cat.nodeValue+"<br/>");

  //动态改变小猫咪的 宽度和高度
    cat.setAttribute("width","200px");
    cat.setAttribute("height","200px");
  //获取我们的属性对应的属性值
    var src= cat.getAttribute("src");
    document.write("src:"+src+"<br/>");
    //02.获取属性节点
    var alt= cat.getAttributeNode("alt");
    document.write("img节点alt的名称:"+alt.nodeName+"<br/>");
    document.write("img节点alt的类型:"+alt.nodeType+"<br/>");
    document.write("img节点alt的值:"+alt.nodeValue+"<br/>");


    //03. 获取第一个li的内容
   var  text= li.firstChild;  //文本节点
    document.write("text的名称:"+text.nodeName+"<br/>");
    document.write("text的类型:"+text.nodeType+"<br/>");
    document.write("text的值:"+text.nodeValue+"<br/>");

</script>

</body>
</html>
访问节点
技术分享
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>节点的增删改</title>
</head>
<body>
<ul>
    <li>大家辛苦了1</li>
    <li>大家辛苦了2</li>
    <li>大家辛苦了3</li>
    <li>大家辛苦了4</li>
    <li>大家辛苦了5</li>
    <li>大家辛苦了6</li>
    <li>大家辛苦了7</li>
    <li>大家辛苦了8</li>
    <li>大家辛苦了9</li>
    <li>大家辛苦了10</li>
    <li>大家辛苦了11</li>
    <li>大家辛苦了12</li>
</ul>


<script type="text/javascript">
    //首先获取页面中的第一个ul
    var ul= document.getElementsByTagName("ul")[0];
    //创建一个新的节点
    var  newLi=document.createElement("li");
    //给新节点的增加内容
    newLi.innerHTML="<h1>哈哈</h1>";
    //在第7 个位置之前 把新增的li放入
    var needLi= ul.getElementsByTagName("li")[6];
    //ul.insertBefore(newLi,needLi); // 把newLi放在needLi之前

    //替换指定的节点
    var repLi= ul.getElementsByTagName("li")[9];
    ul.replaceChild(newLi,repLi);

    //删除指定的节点
    ul.removeChild(newLi);

    //clone  UL
    var newUl= ul.cloneNode(true);
    // 在body中增加 ul
    ul.parentNode.appendChild(newUl);













</script>



</body>
</html>
节点的增删改
技术分享
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>Style样式</title>
    <!--
      之前接触的 行内样式 style 是css设置样式
      现在我们使用的是js中的设置样式!
    -->
    <style type="text/css">
        #myDiv{
            height: 50px;
            width: 50px;
        }
    </style>




</head>
<body>

  <div  id="myDiv" style="border: 1px solid red"></div>

  <button type="button" onclick="changeBackground();">换背景色</button>
  <button type="button" onclick="changeMargin();">换外边距</button>


<script type="text/javascript">
     var div=document.getElementById("myDiv");

     /**
      *  通过js中的style属性来设置样式
      *
      *  注意点:
      *  01.css中有的属性我们 style中都有
      *  02.只不过属性名写法不一致
      *     比如说  css font-size       style fontSize
      */

     function changeBackground(){
         div.style.backgroundColor="pink";  //改变背景颜色
     }
     function changeMargin(){
         div.style.marginLeft="50px";  //改变外边距
     }
</script>

</body>
</html>
Style样式
技术分享
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>Tab切换</title>
    <style type="text/css">
        #tab{ width: 400px;}
        #tab ul{list-style: none;overflow:hidden;margin:0px;padding:0px;}
        #tab ul li{float:left;padding:5px 10px;border:1px solid #eee;cursor:pointer;}
        #tab ul li.cur{background-color: red}
        #tab .content{width:100%;border:1px solid #eeeeee;height: 100px;}
    </style>
</head>
<body>
<div id="tab">
    <ul>
        <li class="cur">tab1</li>
        <li>tab2</li>
        <li>tab3</li>
        <li>tab4</li>
    </ul>
    <div id="c-box">
        <div class="content" id="content-0">
            tab-1第一个容器的内容
        </div>
        <div class="content" id="content-1" style="display: none;">
            tab-2第二个容器的内容
        </div>
        <div class="content" id="content-2" style="display: none;">
            tab-3第3个容器的内容
        </div>
        <div class="content" id="content-3" style="display: none;">
            tab-4第4个容器的内容
        </div>
    </div>



    <script type="text/javascript">
        //获取页面中需要得所有li的集合
        var liList=document.getElementsByTagName("li");
        //循环li集合
        for(var i=0;i<liList.length;i++){
            liList[i].index=i;  //当前选中的li
            liList[i].onmouseover=function(){ //鼠标移入事件
                for(var j=0;j<liList.length;j++){  //循环div
                    document.getElementById("content-"+j).style.display="none"; //所有div的都隐藏
                    liList[j].className="";  //清除所有的li 的class属性值
                }
               liList[this.index].className="cur";//设置选中的li样式
               document.getElementById("content-"+this.index).style.display="block"; //显示选中的li对应div
          }
        }

    </script>
</body>
</html>
Tab切换
技术分享
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>className属性</title>


    <style type="text/css">
        .myDiv{
            height: 50px;
            width: 50px;
            border: 1px solid red;
        }
        .newStyle{
            height: 150px;
            width: 150px;
            border: 2px solid pink;
        }

    </style>
</head>
<body>

<div class="myDiv" id="myDiv"></div>


<script type="text/javascript">
     var div= document.getElementById("myDiv");
     div.onclick=function(){
         div.className="newStyle";  //newStyle是我们需要设置class的名称
     }


</script>
</body>
</html>
className属性
技术分享
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>EasyUI实现tabs</title>
</head>
<body>

   <div id="myTabs">
        <ul>
           <li><a href="#a">第1个</a></li>
           <li><a href="#b">第2个</a></li>
           <li><a href="#c">第3个</a></li>
           <li><a href="#d">第4个</a></li>
        </ul>
       <div id="a">第1个选项卡</div>
       <div id="b">第2个选项卡</div>
       <div id="c">第3个选项卡</div>
       <div id="d">第4个选项卡</div>
   </div>

<!-- 引入我们需要的js文件-->
<script type="text/javascript"  src="../js/jquery-1.8.3.js"></script>
<script type="text/javascript"  src="../js/jquery-ui.js"></script>
<script type="text/javascript"  src="../js/jquery.ui.tabs.js"></script>

<script type="text/javascript">
    $(function(){
         $("#myTabs").tabs({
             active:1,  //默认选中第一个tab
             event:"mouseover"
         })

    })

</script>

</body>
</html>
EasyUI实现tabs
技术分享
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>滚动距离</title>
    <style type="text/css">
        *{margin:0;padding: 0;}
        #box1{height:200px;width: 200px;background:#eee;border:1px solid #000;overflow-y:scroll;}
        p{line-height:40px;}
    </style>
    <script type="text/javascript">
  window.onload=function(){
      var box1=document.getElementById("box1");
      var text=document.getElementById("text");
      //当div滚动的时候
      box1.onscroll=function(){
          text.innerHTML="距离TOP多少像素:"+box1.scrollTop;
      }
  }
    </script>
</head>
<body>
<div id="box1">
    <p>1</p>
    <p>2</p>
    <p>3</p>
    <p>4</p>
    <p>5</p>
    <p>6</p>
    <p>7</p>
    <p>8</p>
    <p>9</p>
    <p>10</p>
    <p>11</p>
    <p>12</p>
    <p>13</p>
    <p>14</p>
</div>
<div id="text"></div>
</body>
</html>
滚动距离
技术分享
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>window.onload</title>
    <!--
      window.onload
      注意点:
      01.在整个页面中只能存在一次,否则后面会覆盖前面
      02.页面中所有的内容加载完毕之后才执行!
      03.没有简写的方法
    -->

</head>
<body>

<img src="../images/cat.jpg">

<script type="text/javascript">
    //alert("页面没有加载完毕就可能执行!");
    window.onload=function(){
        alert("页面中所有的内容加载完毕之后才执行!");
    }

</script>
</body>
</html>
window.onload
技术分享
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>滚动距离</title>
    <style type="text/css">
        *{margin:0;padding: 0;}
        #box{
            position: absolute;
            top: 0px;
            left: 0px;
        }
    </style>
    <script type="text/javascript">
        window.onload = function () {
            var box=document.getElementById("box");
            var time=null,x= 1,y= 1,speed=5;

            function go(){
                //水平方向
                if((box.offsetLeft+box.offsetWidth)>document.documentElement.clientWidth){
                    x=-1;
                }
                if(box.offsetLeft<0){
                    x=1;
                }
                box.style.left=box.offsetLeft+x*speed+"px";
                //垂直方向
                if((box.offsetTop+box.offsetHeight)>document.documentElement.clientHeight){
                    y=-1;
                }
                if(box.offsetTop<0){
                    y=1;
                }
                box.style.top=box.offsetTop+x*speed+"px";
            }
            //定时函数
            time=setInterval(go,100);
            //鼠标移上去 停止
            box.onmousemove=function(){
                if(time!=null){
                    clearInterval(time);
                }
            }
            //鼠标离开  继续移动
            box.onmouseout=function(){
                time=setInterval(go,100);
            }


        }
    </script>
</head>
<body>
<div id="box">
    <img src="../images/cat.jpg" height="200px" width="200px">
</div>
</body>
</html>
滚动距离

 

以上是关于js操作DOM对象的主要内容,如果未能解决你的问题,请参考以下文章

js dom 操作

JS知识点

js基础和js操作bom和dom对象

jQuery的DOM操作

认识JQuery,JQuery的优势语法多库冲突JS原生对象和JQuery对象之间相互转换和DOM操作,常用的方法

原生JS和jQuery操作DOM的区别小结