《使用jQuery快速高效制作网页交互特效》Lesson3 JavaScript操作DOM对象

DOM操作

操作dom时通常分为三类:

1.DOM Core(核心)

DOM Core不是JavaScript的专属品,任何一种支持DOM的编程语言都可以使用它,它的用途不仅限于处理一种使用标记语言编写出来的文档。(getElenmentById()、getElementsTagName()等都是DOM Core的组成部分。)

2.HTML-DOM

使用JavaScript和DOM为HTML文档编写脚本时,有许多专属的HTML-DOM属性,HTML-DOM出现的比DOM Core更早,它提供了一些更简单的标记来描述各种HTML元素的属性,如 document、forms,获取表单对象。

3.CSS-DOM

CSS-DOM是针对CSS的操作,在JavaScript中,CSS-DOM技术的主要作用是获取和设置style对象的各种属性,即CSS属性,通过改变style对象的各种属性,可以使用网页呈现出各种不同的效果,如 element.style.color="red" ,设置文本为红色。


节点和节点关系

DOM是以树状结构组成的HTML文档,根据DOM概念,我们可以知道,HTML文档每个标签或元素都是一个节点,规定如下:

→整个文档是一个文档点。

→每个HTML标签是一个元素节点。

→包含在HTML元素中的文本是文本节点。

→每个HTML属性是一个属性节点。

→注释属于注释节点。

示例1:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文档标题</title>
</head>
<body>
<a href="https://www.baidu.com">我的链接</a>
<h1>我的标题</h1>
</body>
</html>
示例1的节点关系如下↓



访问节点

使用DOM Core访问HTML文档的节点主要有两种方式:

1.使用 getElement 系列方法访问指定节点

与getElementById()、getElementsByName()和getElementSByTagName()方法略有不同。

→getElementById():返回id属性查找的第一个对象的引用。

→getElementsByName():返回按带有指定名称name查找的对象的集合,犹豫一个文档中可能会有多个同名节点(如复选框、单选按钮),因此返回的是元素数组。

→getElementSByTagName():返回带有指定标签名 TagName 查找的对象的集合,由于一个文档中可能会有多个同类型的标签节点(如图片组、文本输入框),因此返回元素数组。

2.根据层次关系访问节点

节点属性
属性名称描述
parentNode返回节点的父节点
childNodes返回子节点集合,childNodes[i]
firstChild返回节点的第一个子节点,最普遍的用法是访问该元素的文本节点
lastChild返回节点的最后一个子节点
nextSibling下一个节点
previousSibling上一个节点

示例2:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>层次关系访问节点</title>
</head>
<body>
<script type="text/javascript">
    function show() {
        var uu = document.getElementById("ul1");
        var ll = uu.firstChild.lastChild.firstChild.innerHTML;
        alert(ll);
    }
</script>
<ul id="ul1"><li>admin<span><em>fff</em></span></li></ul>
<input type="button" value="点击" οnclick="show()">
</body>
</html>

结果:

element属性
属性名称描述
firstElementChild返回节点的第一个子节点,最普遍的用法是访问该元素的文本节点
lastELementChild返回节点的最后一个子节点
nextELementSibling下一个节点
previousElementSibling上一个节点

节点信息

节点是DOM层次结构中任何类型的对象的通用名称,每个节点都拥有包含着关于节点某些信息的属性,属性如下:

→nodeName(节点名称)。

→nodeValue(节点值)。

→nodeType(节点类型)。

节点类型
节点类型NodeType值
元素 element1
属性 attr2
文本 text3
注释 comments8
文档 document9

示例3:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<ul id="nodeList"><li>nodeName</li><li>nodeValue</li><li>nodeType</li></ul>
<p id="p1"></p>
<script>
    var nodes = document.getElementById("nodeList");
    var type1 = nodes.firstChild.nodeType;
    var type2 = nodes.firstChild.firstChild.nodeType;
    var name1 = nodes.firstChild.firstChild.nodeName;
    var str = nodes.firstChild.firstChild.nodeValue;
    var con="type1:"+type1+"<br/>type2:"+type2+"<br/>name1:"+name1+"<br/>str:"+str;
    document.getElementById("p1").innerHTML=con;
</script>
</body>
</html>

结果:


操作节点

操作节点的属性

HTML DOM提供了获取及改变节点属性值得标准方法:

→getAttribute("属性名"):用来获取属性的值。

→setAttribute("属性名","属性值"):用来设置属性的值。

示例4:

<body>
<script type="text/javascript">
    function book() {
        var nn = document.getElementsByName("book");
        var img = document.getElementById("img");
        if (nn[0].checked) {
            img.setAttribute("src", "img/1.jpg");
            img.setAttribute("alt", "滑稽");
            img.nextSibling.innerHTML = "滑稽";
        } else if (nn[1].checked) {
            img.setAttribute("src", "img/2.jpg");
            img.setAttribute("alt", "兴奋");
            img.nextSibling.innerHTML = "兴奋";
        }
    }

</script>

<p>选择你喜欢的表情:
    <input type="radio" name="book" οnclick="book()">滑稽
    <input type="radio" name="book" οnclick="book()">兴奋
</p>
<div><img src="" alt="" id="img" οnclick=""></div>

</body>


创建和插入节点

创建节点
名称描述
createElement(tagName)创建一个标签名为tagName的新元素节点
A.appendChild(b)把B节点追加至A节点的末尾
insertBefour(A,B)把A节点插入B节点之前
cloneNode(deep)复制某个指定的节点

示例5:

<body>
<script>
    function found() {
        var divs = document.getElementsByTagName("div")[0];
        var imgs = document.createElement("img");
        imgs.setAttribute("src", "img/1.jpg");
        divs.appendChild(imgs);
    }
    function copy() {
        var divs = document.getElementsByTagName("div")[0];
        var copys = divs.firstChild.cloneNode(false);
        divs.insertBefore(copys, divs.firstChild);
    }
</script>

<div id="divs"></div>

<input type="button" value="创建" οnclick="found()">
<input type="button" value="复制" οnclick="copy()">
</body>


删除和替换节点

删除和替换节点的方法
名称描述
removeChild(node)删除指定的节点
replaceChild(newNode,oldNode)用其他的节点替换指定的节点
示例6:
<body>
<script>
    function del() {
        var delnode = document.getElementById("divs");
        delnode.parentNode.removeChild(delnode);
    }
    function modify() {
        var oldnode = document.getElementById("imgs");
        var newnode = document.createElement("img");
        newnode.setAttribute("src", "img/2.jpg");
        oldnode.parentNode.replaceChild(newnode, oldnode);
    }
</script>

<div id="divs"></div>
<input type="button" value="删除" οnclick="del()">
<img src="img/3.jpg" id="imgs">
<p><input type="button" value="替换" οnclick="modify()"></p>

</body>


操作节点样式

1.style属性

语法:

HTML 元素.style.样式属性 = "值";

style对象的常用属性↓

类别

属性

描述

Background(背景)

backgroundColor

设置元素的背景颜色

backgroundImage

设置元素的背景图像

backgroundRepeat

设置是否及如何重复背景图像

Text(文本)

fontSize

设置元素的字体大小

fontWeight

设置字体的粗细

textAlign

排列文本

textDecoration

设置文本的修饰

font

设置同一行字体的属性

color

设置文本的颜色

Padding(边距)

padding

设置元素的填充

paddingTop

paddingBottom

paddingLeft

paddiRight

设置元素的上、下、左、右填充

 

 

border(边框)

border

设置四个边框的属性

borderTop

borderBottom

borderLeft

borderRight

设置的上、下、左、右边框的属性

常用事件
名称描述
onclick当用户单击某个对象时调用事件
onmouseover鼠标移到某元素之上
onmouseout鼠标从某元素移开
onmousedown鼠标按钮被按下
示例7:
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="css/shopping.css">
</head>
<section id="shopping">
    <div id="cart" οnmοuseοver="over()" οnmοuseοut="out()">我的购物车<span>1</span></div>
    <div id="cartList">
        <h2>最新加入的商品</h2>
        <ul>
            <li><img src="images/makeup.jpg"></li>
            <li>倩碧经典三部曲套装(液体皂200ml+明肌2号水200ml+润肤乳125ml)</li>
            <li>¥558.00×1<br/>删除</li>
        </ul>
        <div class="footer">共1件商品<span>共计¥558.00</span> <span>去购物车</span></div>
    </div>
</section>
<script>
    document.getElementById("cartList").style.display="none";
    function over() {
        document.getElementById("cart").style.backgroundColor="#fff";
        document.getElementById("cart").style.zIndex="100";
        document.getElementById("cart").style.borderBottom="none";
        document.getElementById("cartList").style.display="block";
        document.getElementById("cartList").style.position="relative";
        document.getElementById("cartList").style.top="-1px";
    }
    function out() {
        document.getElementById("cart").style.backgroundColor="#f9f9f9";
        document.getElementById("cart").style.borderBottom="solid 1px #dcdcdc";
        document.getElementById("cartList").style.display="none";
    }

/*    function over() {
        document.getElementById("cart").className="cartOver";
        document.getElementById("cartList").className="cartListOver";
    }
    function  out() {
        document.getElementById("cart").className="cartOut";
        document.getElementById("cartList").className="cartListOut";
    }*/
</script>
</body>


2.className属性

语法:

HTML 元素.className="样式名称"

示例8:

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="css/shopping.css">
</head>
<section id="shopping">
    <div id="cart" οnmοuseοver="over()" οnmοuseοut="out()">我的购物车<span>1</span></div>
    <div id="cartList">
        <h2>最新加入的商品</h2>
        <ul>
            <li><img src="images/makeup.jpg"></li>
            <li>倩碧经典三部曲套装(液体皂200ml+明肌2号水200ml+润肤乳125ml)</li>
            <li>¥558.00×1<br/>删除</li>
        </ul>
        <div class="footer">共1件商品<span>共计¥558.00</span> <span>去购物车</span></div>
    </div>
</section>
<script>
/*    document.getElementById("cartList").style.display="none";*/
/*    function over() {
        document.getElementById("cart").style.backgroundColor="#fff";
        document.getElementById("cart").style.zIndex="100";
        document.getElementById("cart").style.borderBottom="none";
        document.getElementById("cartList").style.display="block";
        document.getElementById("cartList").style.position="relative";
        document.getElementById("cartList").style.top="-1px";
    }
    function out() {
        document.getElementById("cart").style.backgroundColor="#f9f9f9";
        document.getElementById("cart").style.borderBottom="solid 1px #dcdcdc";
        document.getElementById("cartList").style.display="none";
    }*/

    function over() {
        document.getElementById("cart").className="cartOver";
        document.getElementById("cartList").className="cartListOver";
    }
    function  out() {
        document.getElementById("cart").className="cartOut";
        document.getElementById("cartList").className="cartListOut";
    }
</script>
</body>


获取元素的样式

语法:

HTML 元素.sytle.样式属性;
HTML 元素.currentStyle.样式属性;
document.defaultView.getComputedStyle(元素,null).属性;
### 回答1: 使用jQuery可以快速高效制作网页交互特效jQuery是一个流行的JavaScript库,它提供了许多方便的方法和函数,可以轻松地操作HTML元素、CSS样式和事件处理等。通过使用jQuery,可以快速实现各种动态效果,如滑动、淡入淡出、弹出框等。此外,jQuery还可以与其他JavaScript库和框架集成,扩展其功能。总之,使用jQuery可以大大提高网页交互特效的开发效率和质量。 ### 回答2: jQuery是一种广泛使用JavaScript库,它提供了一系列便捷、高效的函数和方法,帮助开发者更轻松地操作DOM元素、处理事件、实现动画、发送AJAX请求等。本文将从四个方面介绍使用jQuery快速高效制作网页交互特效的方法和技巧。 1. 选择器和DOM操作 jQuery提供了强大而灵活的选择器,如元素选择器、class选择器、id选择器、属性选择器、筛选器等,可以快速准确地选定要处理的元素。DOM操作也非常方便,如获取元素、设置样式、添加、删除、复制等。jQuery的链式调用(chaining)还可以在一行代码中完成多个操作,代码简洁易读。 2. 事件处理 jQuery的事件处理也非常简单方便,可以快速绑定事件、触发事件、取消事件等。常见的鼠标事件、键盘事件、表单事件等都有对应的函数和方法,可以帮助开发者更加方便地实现交互特效。同时,jQuery也提供了事件委托(event delegation)的方式,可以减少事件绑定的数量,提高性能。 3. 动画效果 jQuery的动画效果非常流畅自然,可以帮助开发者实现各种动画特效,如淡入淡出、滑动、展开/收缩、旋转、缩放等。动画函数和方法可以自由组合,设置动画时间、缓动效果、回调函数等,实现精细控制。同时,使用CSS3的transform和transition属性,可以进一步提高动画效果的性能和效果。 4. AJAX请求 jQuery提供了强大的AJAX功能,可以快速方便地向服务器发送请求和接收响应数据,实现Web页面的异步更新和信息交互。$.ajax、$.post、$.get等方法提供了各种参数和回调函数,可以实现不同的请求方式和数据格式。同时,使用promise和deferred对象可以更好地处理异步操作和错误处理。 综上所述,使用jQuery快速高效制作网页交互特效的方法和技巧主要涉及选择器和DOM操作、事件处理、动画效果和AJAX请求等方面。掌握这些技巧可以帮助开发者更轻松地实现交互特效,提高用户体验和网页性能。 ### 回答3: 使用JQuery可以让网页交互特效制作变得更加简单、快捷和高效JQuery是一种JavaScript库,其主要功能是用来简化HTML文档的遍历、操作、事件处理以及动画效果的实现。 首先,JQuery可以帮助我们快速选择文档对象并且可以进行快速操作。通过使用 JQuery的选择器功能,我们只需要以类似于CSS选择器的方式轻松选取HTML元素,然后就可以对其进行各种操作和绑定各种事件,从而让交互特效实现得更加简单高效。 其次,JQuery具有极其丰富的插件及其支持库,便于我们在一些开发场景中快速实现丰富多彩的交互特效,我们只需要调用相关插件和支持库就可以实现各种复杂的功能,无需自己编写大量的 JavaScript 代码。 此外,JQuery还可以帮助我们更好的管理事件处理机制。它提供了大量的事件绑定方法,可以快速的将某个元素绑定一个或多个不同类型的事件,同时也可以方便的将多个事件处理器绑定同一个元素,提供更加灵活的事件处理。 最后,JQuery还拥有强大的动画效果支持。通过调用 JQuery 内置的动画效果函数,我们可以实现各种丰富多彩的动画交互,例如:元素的渐变动画、滑动动画、旋转动画以及自定义动画等等。同时JQuery还支持链式调用语法,可以更加高效地编写出极其精美的交互特效。 总之,JQuery 是一种新型高效JavaScript 库,它可以大大提高交互特效的开发效率和开发质量。无论你是前端开发初学者还是经验丰富的开发者,都可以通过 JQuery 平滑的实现网页交互特效,从而大大提高了用户体验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值