JavaScriptDay3
7.操作BOM对象(重点)
7.1、浏览器介绍
JavaScript和浏览器的关系?
JavaScript的诞生就是为了能够让它在浏览器中运行!
BOM:浏览器对象模型
- IE
- Chorome
- Safari
- FireFox
7.2、window
window代表浏览器窗口
window.alert(1)
undefined
window.innerHeight
798
window.innerWidth
278
7.3、Navigator(不建议使用)
Navigator封装了浏览器的信息
navigator.appName
'Netscape'
navigator.appVersion
'5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36'
navigator.userAgent
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36'
navigator.platform
'Win32'
大多数时候,我们不会使用navigator对象,因为会被人为修改!
不建议使用这些属性来判断和编写代码
7.4、screen
代表屏幕尺寸
screen.width
1920
screen.height
1080
7.5、location(重要)
location代表当前页面的URL信息
host: "localhost:63342"
href: "http://localhost:63342/JavaScript/lesson02
protocol: "http:"
reload:f reload() //刷新网页 相当于F5
//设置新的地址
location.assign('https://home.cnblogs.com/u/Sunyn-blogs')
7.6、document
document代表当前的页面 HTML DOM文档树

获取具体的文档树节点
<dl id="app">
<dt>Java</dt>
<dd>JavaSE</dd>
<dd>JavaEE</dd>
</dl>
<script>
var dl = document.getElementById('app')
</script>
获取cookie

劫持cookie原理:
恶意人员写一个非法网站 里面有非法js文件可能会获取你的cookie,再通过ajax上传到他的服务器
服务器端可以设置cookie:httpOnly
7.7、history(不建议使用)
history代表浏览器的历史记录
history.back() //后退
history.forward() //前进
8.操作DOM对象(重点)
8.1、核心
浏览器网页就是一个DOM树形结构!
- 更新:更新DOM节点
- 遍历DOM节点:得到DOM节点
- 删除:删除一个DOM节点
- 添加:添加一个新的节点
要操作一个DOM节点,就必须要先获得这个DOM节点
//对应css选择器
var h1 = document.getElementsByTagName('h1');
var p1 = document.getElementById('p1');
var p2 = document.getElementsByClassName('p2');
var father = document.getElementById('father');
var childrens = father.children; //获取父节点下的所有子节点
这是原生代码,之后我们尽量都是用jQuery();
8.2、更新节点
<div id="id1">
</div>
<script>
var id1 = document.getElementById('id1');
</script>
操作文本
-
id1.innerText='456' 可以修改文本的值
![image]()
-
id1.innerHTML= '123'可以解析HMTL文本标签
![image]()
操作JavaScript
id1.style.color = 'red'
'red'
id1.style.fontSize = '20px'
'20px

8.3、删除节点
步骤:先获取父节点,再通过父节点删除
<div id="father">
<h1>标题一</h1>
<p id = "p1">p1</p>
<p class="p2">p2</p>
</div>
<script>
var self = document.getElementById(p1)
var father = p1.parentElement;
</script>
如果想删除p1:father.removeChild(self)

也可以这样删除
father.removeChild(father.children[0])
father.removeChild(father.children[1])
father.removeChild(father.children[2])
但是要注意删除是一个动态的过程,如果第一个元素被删除了,那么原来的第二个元素就会成为第一个元素
8.4、插入节点
我们获得了某个DOM节点,假设这个DOM节点是空的,我们通过innerHTML就可以增加一个元素,但是这个DOM节点已经存在元素了,我们就不能这样做了!因为会覆盖之前的元素!
追加:
<p id="js">JavaScript</p>
<div id="list">
<p id="se">JavaSE</p>
<p id="ee">JavaEE</p>
<p id="me">JavaME</p>
</div>
<script>
var js = document.getElementById('js');
var list = document.getElementById('list');
</script>
原:
追加后:


8.5、创建新标签
<p id="js">JavaScript</p>
<div id="list">
<p id="se">JavaSE</p>
<p id="ee">JavaEE</p>
<p id="me">JavaME</p>
</div>
<script>
var js = document.getElementById('js');
var list = document.getElementById('list');
//通过JS,创建一个新的节点
var newP = document.createElement('p');//创建一个p标签
newP.id = 'newP';
newP.innerText = 'Hello,sunyaning';
</script>

//创建一个标签节点
var myScript = document.createElement('script');
myScript.setAttribute('type','text/javascript');
myScript.setAttribute('type','text/javascript');等价于

8.6、insert
var ee = document.getElementById('ee');
var js = document.getElementById('js');
var list = document.getElementById('list');
//insertBefore(newNode,targetNode)
list.insertBefore(js,ee);

9.操作表单
9.1、表单是什么 form
- 文本框 text
- 下拉框 select
- 单选框 radio
- 多选框 checkbox
- 隐藏域 hidden
- 密码框 password
表单的目的:提交信息
<form action="post">
<span>用户名:</span> <input type="text" id="username">
</form>
<script>
var input_text = document.getElementById('username');
// //得到输入框的值
// input_text.value;
// //修改输入框的值
// input_text = '123';
</script>

<form action="post">
<p>
<span>用户名:</span> <input type="text" id="username">
</p>
<!--多选框的值就是定义好的value-->
<p>
<span>性别:</span>
<input type="radio" name="sex" value="man" id="boy"> 男
<input type="radio" name="sex" value="man" id="gril"> 女
</p>
</form>
<script>
var input_text = document.getElementById('username');
var boy_radio = document.getElementById("boy");
var gril_radio = document.getElementById("gril");
// //得到输入框的值
// input_text.value;
// //修改输入框的值
// input_text = '123';
//对于单选框,多选框等等固定的值,boy_radio.value只能取到当前的值
boy_radio.checked; //查看返回的结果,是否为true,如果为true,则被选中
gril_radio.checked = true; //用代码实现对表单的操作
</script>
9.2、提交表单
原始提交如下:
<form action="/login" method="post" id="form1">
<span>用户</span>
<input type="text" name="username" id="username"/><br/>
<span>密码</span>
<input type="password" name="password" id="passsword"/><br/>
<input type="submit" value="提交">
</form>
- form是一个表单,用来发送http请求。直观的说,只要用form将需要提交到服务器的标签包围,当提交的时候,就会向服务器发送有name属性的数据。所以,input内容提交必须有name属性。
- action:服务器接口路径;
- method:选择发送请求的方式,默认是get,通常用post。get请求会在地址栏显示参数,并且有长度限制。post则没有。
- id:标识标签元素
- 当提交后,服务器就会得到:username=填的用户名 & password=填的密码
- 当点击提交后,form数据就会发送。通常提交前要校验数据。比如长度规则等。所以需要js。
9.3、前端密码MD5加密
10.jQuery
jQuery库,里面存在大量的JavaScript函数
10.1、获取jQuery
方式一:CDN在线引入
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
方式二:官网下载,放在项目里引入
<script src="lib/jquery-3.4.1.js"></script>
公式:$(selector).action() 选择器+事件
例:
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
</head>
<body>
<a href="#" id="test-jQuery">点我</a>
<script>
$('#test-jQuery').click(function (){
alert('hello,jQuery')
})
</script>
10.2、选择器
//JavaScript,选择器少,麻烦不好记
//标签
document.getElementsByTagName();
//id
document.getElementById();
//类
document.getElementsByClassName();
//jQuery css中的选择器它全部都能用!
$('p').click();//标签选择器
$('#id1').click();id选择器
$('.class').click();//class选择器
文档工具站:https://tool.oschina.net/apidocs/apidoc?api=jquery
10.3、事件
鼠标事件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<style>
#divMove{
width: 500px;
height: 500px;
border: 1px solid red;
}
</style>
</head>
<body>
<!--要求:获取鼠标当前的一个坐标-->
mouse: <span id="mouseMove"></span>
<div id="divMove">在这里移动鼠标</div>
<script>
//当网页元素加载完毕之后,响应事件
$(function (){
$('#divMove').mousemove(function (e){
$('#mouseMove').text('x:'+e.pageX + 'y:' + e.pageY);
})
});
</script>
</body>
</html>
10.4、操作DOM
节点文本操作
$('#test-ul li[name="python"]').text();//获得值
$('#test-ul li[name="python"]').text('123456');//设置值
$('#test-ul').html();//获得值
$('#test-ul').html('123456');//设置值
css的操作

元素的显示和隐藏:本质 display: none;




浙公网安备 33010602011771号