6.web前端之路:DOM

DOM

文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口。它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式。我们最为关心的是,DOM把网页和脚本以及其他编程语言联系了起来。DOM属于浏览器,而不是JavaScript语言规范里规定的核心内容。

一、查找元素

1.直接查找

var obj0 = document.getElementById(‘SomeId‘);               根据ID获取一个标签
var obj1 = document.getElementsByName(‘SomeId‘);            根据name属性获取标签集合
var obj2 = document.getElementsByClassName(‘SomeId‘);       根据class属性获取标签集合
var obj3 = document.getElementsByTagName(‘SomeId‘);         根据标签名获取标签集合  

2.间接查找

parentNode          // 父节点
childNodes          // 所有子节点
firstChild          // 第一个子节点
lastChild           // 最后一个子节点
nextSibling         // 下一个兄弟节点
previousSibling     // 上一个兄弟节点

parentElement           // 父节点标签元素
children                // 所有子标签
firstElementChild       // 第一个子标签元素
lastElementChild        // 最后一个子标签元素
nextElementtSibling     // 下一个兄弟标签元素
previousElementSibling  // 上一个兄弟标签元素

  

二、操作

1.内容

innerText   文本
outerText
innerHTML   HTML内容
innerHTML
value       值

2.属性

attributes                // 获取所有标签属性
setAttribute(key,value)   // 设置标签属性
getAttribute(key)         // 获取指定标签属性

/*
var atr = document.createAttribute("class");
atr.nodeValue="democlass";
document.getElementById(‘n1‘).setAttributeNode(atr);
*/

3.class操作

className                // 获取所有类名
classList.remove(cls)    // 删除指定类
classList.add(cls)       // 添加类

4.标签操作

a.创建标签

// 方式一
var tag = document.createElement(‘a‘)
tag.innerText = "wupeiqi"
tag.className = "c1"
tag.href = "http://www.cnblogs.com/wupeiqi"

// 方式二
var tag = "<a class=‘c1‘ href=‘http://www.cnblogs.com/wupeiqi‘>wupeiqi</a>"

b.操作标签

// 方式一
var obj = "<input type=‘text‘ />";
xxx.insertAdjacentHTML("beforeEnd",obj);
xxx.insertAdjacentElement(‘afterBegin‘,document.createElement(‘p‘))

//注意:第一个参数只能是‘beforeBegin‘、 ‘afterBegin‘、 ‘beforeEnd‘、 ‘afterEnd‘

// 方式二
var tag = document.createElement(‘a‘)
xxx.appendChild(tag)
xxx.insertBefore(tag,xxx[1])

5.样式操作

var obj = document.getElementById(‘i1‘)

obj.style.fontSize = "32px";
obj.style.backgroundColor = "red";

<input onfocus="Focus(this);" onblur="Blur(this);" id="search" value="请输入关键字" style="color: gray;" />

    <script>
        function Focus(ths){
            ths.style.color = "black";
            if(ths.value == ‘请输入关键字‘ || ths.value.trim() == ""){

                ths.value = "";
            }
        }

        function Blur(ths){
            if(ths.value.trim() == ""){
                ths.value = ‘请输入关键字‘;
                ths.style.color = ‘gray‘;
            }else{
                ths.style.color = "black";
            }
        }
    </script>

Demo

6.位置操作

总文档高度
document.documentElement.offsetHeight

当前文档占屏幕高度
document.documentElement.clientHeight

自身高度
tag.offsetHeight

距离上级定位高度
tag.offsetTop

父定位标签
tag.offsetParent

滚动高度
tag.scrollTop

/*
    clientHeight -> 可见区域:height + padding
    clientTop    -> border高度
    offsetHeight -> 可见区域:height + padding + border
    offsetTop    -> 上级定位标签的高度
    scrollHeight -> 全文高:height + padding
    scrollTop    -> 滚动高度
    特别的:
        document.documentElement代指文档根节点
*/

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body style="margin: 0;">
    <div style="height: 900px;">

    </div>
    <div style="padding: 10px;">
        <div id="i1" style="height:190px;padding: 2px;border: 1px solid red;margin: 8px;">
                <p>asdf</p>
                <p>asdf</p>
                <p>asdf</p>
                <p>asdf</p>
                <p>asdf</p>
        </div>
    </div>

    <script>
        var i1 = document.getElementById(‘i1‘);

        console.log(i1.clientHeight); // 可见区域:height + padding
        console.log(i1.clientTop);    // border高度
        console.log(‘=====‘);
        console.log(i1.offsetHeight); // 可见区域:height + padding + border
        console.log(i1.offsetTop);    // 上级定位标签的高度
        console.log(‘=====‘);
        console.log(i1.scrollHeight);   //全文高:height + padding
        console.log(i1.scrollTop);      // 滚动高度
        console.log(‘=====‘);

    </script>
</body>
</html>

test

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<style>

    body{
        margin: 0px;
    }
    img {
        border: 0;
    }
    ul{
        padding: 0;
        margin: 0;
        list-style: none;
    }
    .clearfix:after {
        content: ".";
        display: block;
        height: 0;
        clear: both;
        visibility: hidden;
    }

    .wrap{
        width: 980px;
        margin: 0 auto;
    }

    .pg-header{
        background-color: #303a40;
        -webkit-box-shadow: 0 2px 5px rgba(0,0,0,.2);
        -moz-box-shadow: 0 2px 5px rgba(0,0,0,.2);
        box-shadow: 0 2px 5px rgba(0,0,0,.2);
    }
    .pg-header .logo{
        float: left;
        padding:5px 10px 5px 0px;
    }
    .pg-header .logo img{
        vertical-align: middle;
        width: 110px;
        height: 40px;

    }
    .pg-header .nav{
        line-height: 50px;
    }
    .pg-header .nav ul li{
        float: left;
    }
    .pg-header .nav ul li a{
        display: block;
        color: #ccc;
        padding: 0 20px;
        text-decoration: none;
        font-size: 14px;
    }
    .pg-header .nav ul li a:hover{
        color: #fff;
        background-color: #425a66;
    }
    .pg-body{

    }
    .pg-body .catalog{
        position: absolute;
        top:60px;
        width: 200px;
        background-color: #fafafa;
        bottom: 0px;
    }
    .pg-body .catalog.fixed{
        position: fixed;
        top:10px;
    }

    .pg-body .catalog .catalog-item.active{
        color: #fff;
        background-color: #425a66;
    }

    .pg-body .content{
        position: absolute;
        top:60px;
        width: 700px;
        margin-left: 210px;
        background-color: #fafafa;
        overflow: auto;
    }
    .pg-body .content .section{
        height: 500px;
    }
</style>
<body onscroll="ScrollEvent();">
<div class="pg-header">
    <div class="wrap clearfix">
        <div class="logo">
            <a href="#">
                <img src="http://core.pc.lietou-static.com/revs/images/common/logo_7012c4a4.pn">
            </a>
        </div>
        <div class="nav">
            <ul>
                <li>
                    <a  href="#">首页</a>
                </li>
                <li>
                    <a  href="#">功能一</a>
                </li>
                <li>
                    <a  href="#">功能二</a>
                </li>
            </ul>
        </div>

    </div>
</div>
<div class="pg-body">
    <div class="wrap">
        <div class="catalog">
            <div class="catalog-item" auto-to="function1"><a>第1张</a></div>
            <div class="catalog-item" auto-to="function2"><a>第2张</a></div>
            <div class="catalog-item" auto-to="function3"><a>第3张</a></div>
        </div>
        <div class="content">
            <div menu="function1" class="section">
                <h1>第一章</h1>
            </div>
            <div menu="function2" class="section">
                <h1>第二章</h1>
            </div>
            <div menu="function3" class="section">
                <h1>第三章</h1>
            </div>
        </div>
    </div>

</div>
    <script>
        function ScrollEvent(){
            var bodyScrollTop = document.body.scrollTop;
            if(bodyScrollTop>50){
                document.getElementsByClassName(‘catalog‘)[0].classList.add(‘fixed‘);
            }else{
                document.getElementsByClassName(‘catalog‘)[0].classList.remove(‘fixed‘);
            }

        }
    </script>
</body>
</html>

Demo-滚动固定

Demo-滚动菜单

Demo-滚动高度

7.提交表单

document.geElementById(‘form‘).submit()

8.其他操作

console.log                 输出框
alert                       弹出框
confirm                     确认框

// URL和刷新
location.href               获取URL
location.href = "url"       重定向
location.reload()           重新加载

// 定时器
setInterval                 多次定时器
clearInterval               清除多次定时器
setTimeout                  单次定时器
clearTimeout                清除单次定时器

三、事件

对于事件需要注意的要点:

  • this
  • event
  • 事件链以及跳出

this标签是当前正在操作的标签,event封装了当前事件的内容。

时间: 2024-08-27 18:20:58

6.web前端之路:DOM的相关文章

【转】别人家的孩子之《说说我的web前端之路,分享些前端的好书》

链接http://www.cnblogs.com/Darren_code/archive/2011/02/09/JavaScript.html   2011-10-31 22:56 by 聂微东 PS:(11年现在都16年了 落后了5年哎...) WEB前端研发工程师,在国内算是一个朝阳职业,这个领域没有学校的正规教育,大多数人都是靠自己自学成才.本文主要介绍自己从事web开发以来(从大二至今)看过的书籍和自己的成长过程,目的是给想了解JavaScript或者是刚接触JavaScript的朋友,

我的web前端之路_入门篇

去年下半年我开始了我的web前端之旅,由于是工作三年后转行,为了尽快入门,我选择了参加培训班.这里我想特别说明一下,网上有很多鄙视培训的同学,但就我个人的培训经历而言,除了最后一阶段会有类似于面试忽悠,简历包装这样的辅导外,就从课程本身来说安排的还是比较合理的,授课老师知识水平和教学水平也都不错,学习氛围也比较好.除了性价比我觉得不是很高外,还有就是培训结束后自己能否保持学习.对于还在上学的同学,我是比较推荐自学.如果你对前端开发有兴趣,不妨自己学起来,现在网上的资源还是挺丰富的,如果学习中有什

web前端之路 - 开篇

一 web发展历程 了解事物的历史有助于我们渐进式的从发展的思路清楚了解事物的来龙去脉. 这里有一篇网文写得比较清晰和完整:https://www.tianmaying.com/tutorial/web-history 二 前后端分离 前后端分离为我们说明前后端分离的依据,缘由,以及提供理论基础. 在这里也有一篇博客写得非常好,里面详细阐明了前后端分离,以及前端的一些情况和诉求,http://www.cnblogs.com/aspnethot/articles/3678994.html 三 Co

我的web前端之路

毕业3年,真的很迷茫,不知道从事哪行,工资一直在最底层徘徊吧! 很多人说,我是女孩子,随便找份工作就ok了.但是生活真的很现实,看到身边的人好像都比你过的好,你真的愿意就这样庸庸碌碌拿着4000千元工资过一辈子吗?何况自己讨厌这样看不到前景,下了班就是逛街的生活. 现在还不算老,应该为自己的未来努力打拼了. 转行对于我来讲,真的是需要很大的决心,需要面对前期微薄的工资,需要私下花更多时间去学习,这样才能跟的上技术需要的脚步. 想来想去,还是想做前端开发这行,期待2年之后,破茧成蝶的那天!那时的自

1.web前端之路:HTML基础

HTML 1.HTML结构 <!DOCTYPE html> <!--语法开始--> <html lang="en"> <head> <!--头部信息,如title标签定义的网页标题--> <meta charset="UTF-8"> <title>Title</title> </head> <body> <!--主体信息,包含网页显示的内容-

7.web前端之路:CSS剖析指之盒子模型

一.margin和padding作用域 盒子模型 二.margin margin:用于控制元素与元素之间的距离:margin的最基本用途就是控制元素周围空间的空隔 从视角上达到相互隔开的目的,俗称为外边距,其大小不会影响盒子的大小. 三.padding padding:用于控制内容与边框之间的距离,俗称为内边距,其大小会将盒子想四周撑开. 四.注意 边框在默认情况下定位于浏览器窗口的左上角,但是并没有紧贴着浏览器的宽口的边框,这是因为body 本身也是一个盒子(它存在于HTML这个大盒子里面),

5.web前端之路:JavaScript

JavaScript JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规范编写相应代码, 浏览器可以解释并做出相应的处理. 一.如何编写 1.JavaScript代码存在形式 <!--方式一 --> <script type="text/javascript" src="JS文件"></script> <!--方式二 --> <scri

6.web前端之路:JavaScript作用域

JavaScript 一."JavaScript中无块级作用域" 在Java和C#中存在块级作用域,即:大括号也是一个作用域 public static void main () { if(1==1){ String name = "seven"; } System.out.println(name); } // 报错 Java public static void Main() { if(1==1){ string name = "seven"

Web前端开发推荐阅读书籍、学习课程下载

转自http://www.xuanfengge.com/fe-books.html 前言 学校里没有前端的课程,那如何学习JavaScript,又如何使自己成为一个合格的前端工程师呢? 除了在项目中学习和跟着有经验的同事学习,读书也是必不可少的.书中有着相对完整的知识体系,每读一本好书都会带来一次全面的提高. 而如果深一脚浅一脚的学习,写出代码的质量会参差不齐.初学者的首要任务是成为靠谱的熟练开发者,能够稳定的输出有一定质量的代码. 前端技术发展速度特别快,总是涌现出很多新的东西,需要不断的学习