JavaScript学习笔记(三)

7.操作BOM对象(重点)

浏览器介绍

JavaScript 和 浏览器关系?
JavaScript 诞生就是为了能够让它在浏览器中运行!

BOM:浏览器对象模型
主流浏览器:

  • IE 6~11
  • Chrome
  • Safari
  • FireFox (Linux默认浏览器)

三方:

  • QQ浏览器
  • 360浏览器

window (重要)

window 代表浏览器窗口

window.alert(1)
undefined
window.innerHeight
731
window.innerWidth
763
window.outerHeight
834
window.outerWidth
1536

扩充

1.window.innerWidth与window.innerHeight
window.innerWidthwindow.innerHeight:获得的是可视区域的宽高,但是window.innerWidth宽度包含了纵向滚动条的宽度,window.innerHeight高度包含了横向滚动条的高度(IE8以及低版本浏览器不支持)。也就是:

window.innerWidth = width + padding + border + 纵向滚动条宽度
window.innerHeight = height + padding + border + 横向滚动条高度

2.window.outerWidth与window.outerHeight
window.outerWidthwindow.outerHeight:获得的是加上工具条与滚动条窗口的宽度与高度。

window.outerWidth = width + padding + border + 纵向滚动条宽度
window.outerHeight = height + padding + border + 横向滚动条高度 + 工具条高度

Navigator

Navigator:封装了浏览器的信息

navigator.appName
"Netscape"
navigator.appVersion
"5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
navigator.userAgent
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
navigator.platform
"Win32"

大多数时候,我们不会使用navigator对象,因为会被人为修改!
不建议使用这些属性来判断和编写代码。

screen

代表屏幕尺寸:

screen.width
1536px
screen.height
864px

location (重要)

location 代表当前页面的URL信息

host: "www.baidu.com"   //主机
href: "https://www.baidu.com/"    //当前指向的位置
protocol: "https:"         //协议
reload: ƒ reload()  //刷新网页
location.assign('链接')//设置新的地址

document

document:代表当前的页面,html DOM文档树

document.title
"百度一下,你就知道"
document.title='改一个title'
"改一个title"

获取具体的文档树节点,(就可以动态的增加节点或者删除节点)

<dl id="app">
    <dt>Javadt>
    <dd>javasedd>
    <dd>javaeedd>
dl>
<script>
    var dl = document.getElementById('app');
script>

获取cookie

document.cookie
""

我用的是谷歌浏览器,据我百度网上有些说:“在本地访问下,cookie在chrome上设置无效,需要在服务器环境下才可以操作cookie(如:http://localhost本地服务器)! 原因在于chrome不支持js在本地操作cookie。(点击打开)。下面这个是狂神视频里获取到的cookie:”
在这里插入图片描述
劫持cookie 原理
www.taobao.com

<script src = "aa.js"></script>
<!--恶意人员:获取你的cookie上传到他的服务器,甚至伪造cookie-->

所以不要轻易暴露自己的 cookie ,所以服务器端可以设置 cookie:httpOnly,只要设置这个就安全了!

history (不建议使用)

history 代表浏览器的历史记录

history.back();//后退
history.forward(); // 前进

8、操作DOM对象(重点)

DOM:文档对象模型,

核心

浏览器网页就是一个 DOM 树形结构!

  • 更新:更新 DOM 节点
  • 遍历 DOM 节点:得到 DOM 节点
  • 删除:删除一个 DOM 节点
  • 添加:添加一个新的节点

要操作一个DOM节点,就必须要先获得这个DOM

获得DOM 节点

<div id="father">
    <h1>一级标题</h1>
    <p id="p1">p1</p>
    <p class="p2">p2</p>
</div>

<script>
    //对应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[index];//获取父节点下的所有子节点
    // father.firstChild
    // father.lastChild
</script>

这是原生代码,之后尽量用的都是JQuery();

更新节点

<div id = "id1">

</div>
<script>
    var id1 = document.getElementById('id1');
</script>
  • id1.innerText='123':修改文本的值
  • id1.innerHTML='123':可以解析html文本标签

操作 js

->id1.style.color = 'red';// 属性使用字符串
<-"red"
->id1.style.fontSize = '200px'// 驼峰命名
<-"200px"
->id1.style.padding='2em'
<-"2em"

删除节点

删除节点的步骤:先获取父节点,在通过父节点删除自己

<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;//获取父亲节点
father.removeChild(self)

//删除是一个动态过程
father.removeChild(father.childern[0])
father.removeChild(father.childern[1])//当删除第一个的时候节点会变化
father.removeChild(father.childern[2])

注意:删除多个节点的时候,children 是在时刻变化的,删除节点的时候一定要注意~

插入节点

我们获得了某个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');
    list.appendChild(js);//追加到后面
</script>

JavaScript学习笔记(三)_第1张图片

创建一个新的标签,实现插入

<script>
    var js = document.getElementById('js');//已经存在的节点
    var list = document.getElementById('list');
    //通过js 创建一个新的节点
    var newp = document.createElement('p');
    newp.id = 'newp';
    newp.innerText = "Hello,javascript";
    //创建一个标签节点
    var myScript = document.createElement('script');
    myScript.setAttribute('tyoe','text/javascritp');

    //创建一个style标签
    var myStyle = document.createElement('style');//创建了一个空style标签
    myStyle.setAttribute('type','text/css');
    myStyle.innerHTML = 'body{background-color:chartreuse;}';//设置标签的内容
    document.getElementsByTagName('head')[0].appendChild(myStyle);

</script>

insertBefore

  var ee = document.getElementById('ee');
  var js = document.getElementById('js');
  var list = document.getElementById('list');
  // 要包含的节点.insertBefore(newNode,targetNode)
  list.insertBefore(js,ee);

9、操作表单(验证)

表单是什么 form DOM 树

  • 文本框 text
  • 下拉框
  • 单选框 radio
  • 多选框 checkbox
  • 隐藏框 hidden
  • 密码框 password

  • 表单的目的:提交信息
<form action="post">
    <p>
        <span>用户名:span> <input type="text" id="username">
    p>


    <p>
        <span>性别:span>
        <input type="radio" name="sex" value="man" id="boy"><input type="radio" name="sex" value="women" id="girl">p>

form>

<script>
    var input_text = document.getElementById('username');
    var boy_radio = document.getElementById('boy');
    var girl_radio = document.getElementById('girl');
    //得到输入框的值
    input_text.value;
    //修改输入框的值
    input_text.value = '654';


    // 对于单选框,多选框等固定的值,boy_radio.value只能取到当前的值
    girl_radio.checked;// 查看返回的结果,是否为true如果为true,则被选中!
    girl_radio.checked = true;//赋值
script>

提交表单 md5 加密密码


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>

    <script src="https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.min.js">script>
head>
<body>


<form action="https://www.baidu.com/" method="post" onsubmit="return aaa()">
    <p>
        
        <span>用户名:span> <input type="text" id="username"  name="username">
    p>
    <p>
        <span>密码:span> <input type="password" id="input-password" >
    p>
    

  
    <input type="hidden" id="md5-password" name="password">
    
    <button type="submit">提交button>
form>
<script>
    function aaa() {
        alert(1);
       var name = document.getElementById('username');
       var pwd = document.getElementById('input-password');
       var md5pwd = document.getElementById('md5-password');
        md5pwd.value=md5(pwd.value);
        //可以校验判断表单内容,true就是提交,false就是阻止提交
        return true;
    }
script>
body>
html>

10、jQuery

javascript
jQuery库:里面存在大量的javascript函数

获取jQuery

(点击打开JQuery官网)
(点击打开JQuery中文文档)
JavaScript学习笔记(三)_第2张图片
公式:$(选择器).事件(事件函数)
JavaScript学习笔记(三)_第3张图片
编译过的用于上线产品,开发一般采用未编译的

使用:

可以直接找一些在线连接(直接百度搜:CDN jQuery)


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
    
    
                    
                    

你可能感兴趣的:(=====前端=====,javascript)