一般情况下,DOM操作分三个方面:DOM Core、HTML-DOM和CSS-DOM
并不是JavaScript所专有,也不仅仅只操作HTML文档。只要文档是DOM结构,都可以使用核心DOM中的方法,如html文档和xml文档都可以使用getElementByxx(s)相关的方法获得元素
专门针对HTML的一种DOM操作。提供了一些专属的方法。例如,直接通过document对象获取标签对象或操作标签的属性。这两种DOM操作都是HTML-DOM。
例如:document.froms element.src
CSS-DOM是针对CSS的操作。主要作用就是获取和数组style对象的各种属性。让网页呈现出不同的效果。
例如:element.style.color = “red”;
三个方法:text()、html()和 val()
<html>
<head>
<meta charset="UTF-8">
<title>title>
<script src="libs/jquery-3.1.1.js" type="text/javascript" charset="utf-8">script>
<script type="text/javascript">
$(function () {
//获取得到的标签的内的文本,不包括内部的标签。但是内部标签与标签中的空格会获取到
var text = $(".box").text(); // ele.innerText
console.log(text);
var html = $(".box").html();
//标签内的所有内容,包括子标签本身 ele.innerHTML
console.log(html);
//上面的方法不传入参数表示只是获取,如果传入字符串表示设置
// $(".box").text("哈哈哈");
//设置html,如果有标签,则会解析出来
$(".box").html("")
})
$(function () {
$("div button").click(function () {
//获取一个标签的value值(如果有)
var inputText = $("div input").val();
alert(inputText);
})
})
script>
head>
<body>
<div class="box">
<a href="http://www.yztcedu.com">点我去育知同创a>
div>
<div>
<input type="text" name="user" id="user" value="" />
<br />
<button>获取输入框中的值button>
div>
body>
html>
attr(属性名)方法操作
<html>
<head>
<meta charset="UTF-8">
<title>title>
<script src="libs/jquery-3.1.1.js" type="text/javascript" charset="utf-8">script>
<script type="text/javascript">
$(function() {
//获取属性href的值
var $href = $("div a").attr("href");
console.log($href);
//点击按钮的时候更换属性的值
$("div button").click(function () {
$("div a")
.attr("href", "http://www.sina.com.cn") //参数1:属性名 参数2:属性值
.attr("title", "浪浪")
.text("浪一下");
})
})
script>
head>
<body>
<div class="box">
<a href="http://www.yztcedu.com">点我去育知同创a>
div>
<div><button>更换友情链接button>div>
body>
html>
如果需要同时设置多个属性也可以把多个属性封装在一个对象中
$("div a")
.attr({
href:"http://www.sina.com.cn",
title:"浪浪"
})
.text("浪一下");
这里的样式操作主要是针对一个元素的class属性进行操作。一般有一些潜规则:id是给js用的,class是给css用的。所以,大家希望用class去设置样式。
对样式的操作包括:获取class,设置class,追加class,删除class,切换class,判断是否有class属性
class也是属性,所以获取和设置的方法与获取和设置属性的方法一致。
<html>
<head>
<meta charset="UTF-8">
<title>title>
<style type="text/css">
div.nomal{
width: 200px;
height: 200px;
background: pink;
border: 1px dashed blue;
}
div ul{
list-style: none;
}
.big{
width: 400px;
height: 400px;
border: 1px dashed green;
}
.color{
background: gray;
}
style>
<script src="libs/jquery-3.1.1.js" type="text/javascript" charset="utf-8">script>
<script type="text/javascript">
$(function () {
$("li:nth-child(1)").click(function () {
$("div#box").attr("class", "big");
})
$("li:nth-child(2)").click(function () {
$("div#box").attr("class", "color");
})
})
script>
head>
<body>
<div class="nomal" id="box">我是div中的元素div>
<div>
<ul>
<li><button>点我变大button>li>
<li><button>点我变色button>li>
ul>
div>
body>
html>
替换样式会把原来的全部更新,有的时候,我们只想向更新某个样式,则使用追加。
CSS规定,一个元素的class属性可以多个值,多个值之间用空格隔开。表示合并这些样式的值。如果有重复的,则以后面的为准
JQuery使用addClass方法来追加样式.
addClass方法可以完成追加的效果
$(function () {
$("ul li:first").click(function () {
//追加样式
$("#box").
("big");
})
$("li:eq(1)").click(function () {
$("#box").addClass("color");
})
})
removeClass(样式名)
toggleClass(样式)
切换样式,如果类名存在则删除,不存在则添加
$(function () {
$("li:last").click(function () {
//该方法会自动判断这个class是否存在,如果存在就删除,不存在就添加
$("#box").toggleClass("color");
})
})
hasClass(样式)