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>Java</dt>
    <dd>javase</dd>
    <dd>javaee</dd>
</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='<strong>123<strong>':可以解析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>

在这里插入图片描述

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

<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
  • 下拉框 <selext>
  • 单选框 radio
  • 多选框 checkbox
  • 隐藏框 hidden
  • 密码框 password

  • 表单的目的:提交信息
<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="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 加密密码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<!--引入MD5工具类-->
    <script src="https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.min.js"></script>
</head>
<body>

<!--
表单提交事件
οnsubmit=绑定一个提交检测的函数,true,false,将这个结果返回给表单,使用onsubmit接收!
-->
<form action="https://www.baidu.com/" method="post" onsubmit="return aaa()">
    <p>
        <!--required是提醒用户输入字段-->
        <span>用户名:</span> <input type="text" id="username"  name="username">
    </p>
    <p>
        <span>密码:</span> <input type="password" id="input-password" >
    </p>
    <!--绑定一些事件 onclick 被点击-->
<!--    <button type="submit" οnclick="aaa()">提交</button>-->
  <!--这里隐藏密码是因为在提交的一瞬间会使密码变长,用户体验不好-->
    <input type="hidden" id="md5-password" name="password">
    <!--绑定一些事件 onclick 被点击-->
    <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中文文档
在这里插入图片描述
公式:$(选择器).事件(事件函数)
在这里插入图片描述
编译过的用于上线产品,开发一般采用未编译的

使用:

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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--cdn 引入-->
    <script src="https://cdn.bootcss.com/jquery/3.4.1/core.js"
</head>
<body>

</body>
</html>

可以下载到本地然后引入到项目中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--<script src="https://cdn.bootcss.com/jquery/3.4.1/core.js"-->
    <script src="lib/jquery-3.4.1.js"></script>
</head>
<body>
<!--
   选择器 + 事件
   公式:$(selector).action()
-->
<a href="" id="test-jQuery">点我</a>
<script>

    //选择器就是css选择器
    $('#test-jQuery').click(function () {
        alert('hello,jQuery');
    })
</script>

</body>
</html>

选择器

<script>
    //标签
      document.getElementsByTagName();
    //id
      document.getElementById();
    //类
      document.getElementsByClassName();

    //jQuery   css中的选择器全部能用
    $('p').click()//标签选择器
    $('#id1').click()//id选择器
    $('.class1').click()//class选择器

</script>

点击打开文档工具站

事件

鼠标事件、键盘事件、其他事件…
鼠标事件:
在这里插入图片描述

操作DOM

节点文本操作:

$('#test-ul li[name=python]').text();//获得值
$('#test-ul li[name=python]').text('设置值');//设置值
$('#test-ul').html();//获得值
$('#test-ul').html('<strong>13</strong>');//设置值

css的操作:

$('#test-ul li[name=python]').css({"color","red"});

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

$('#test-ul li[name=python]').show();
$('#test-ul li[name=python]').hide();

娱乐测试:

$(window).width();
$(window).height();
$(document).width()
$(document).height()

未来ajax();

$('#from').ajax();

$.ajax({ url: "test.html", context: document.body, success: function(){
    $(this).addClass("done");
}});

小技巧

1.如何巩固js (看jQuery源码,看游戏源码)
2.巩固html、css(扒网站,全部down下来,然后对应修改看效果~)

layui
Element-ui
bootstrap

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值