Day23 2021.4.9 javascript 下

Day23 2021.4.9

javascript

面向对象编程

面向对象原型继承:

// "use strict"
var student = {
    name: "hong",
    age: 3,
    run: function (){
        console.log(this.name + " run...");
    }
};

var xiaoming = {
    name: "xiaoming"
};

//小明的原型是student
xiaoming.__proto__= student;

面向对象class继承:

'use strict'
//ES6之后
//定义一个学生的类   2
class  Student {
    constructor(name) {
        this.name = name;
    }
    hello(){
        alert('hello');
    }
}
class xiaoxues extends Student{
    constructor(name,grade) {
        super(name);
        this.grade;
    }
}
var xiaoming = new Student("xiaoming");
var xiaohong = new Student("xiaohong");

原型链

在JavaScript中原型是一个prototype对象,用于表示类型之间的关系。

原型链指向为:f1.proto---->Fn.prototype.proto----->Object.prototype.prototype---->null

从一开始的f1的prototype一直向上指直到Object结束,Object的__proto__指向null

操作BOM对象

JAVAScript诞生就是为了能够让他在浏览器中运行

BOM:浏览器对象模型

Window

window代表浏览器窗口

window.alert(1)  //弹窗
undefined
window.innerHeight //内部高度
392
window.innerWidth  //内部宽度
1044
window.outerHeight  //外部高度
812
window.outerWidth  //外部宽度
1059

Navigator(封装了浏览器的信息)

Navigator封装了浏览器的信息

navigator.appName //当前app名字
"Netscape"
navigator.appVersion  //当前app信息
"5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
navigator.userAgent  //当前用户信息
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
navigator.platform  //当前系统版本
"Win32"

不建议使用这些属性判断和编写代码

Screen

screen.width  //屏幕宽度
1536px
screen.height  //屏幕高度
864px

location(当前页面的URL信息)

location代表定位 当前页面的URL信息

hash: ""
host: "www.baidu.com"
hostname: "www.baidu.com"
href: "https://www.baidu.com/"
origin: "https://www.baidu.com"
pathname: "/"
port: ""
protocol: "https:"  //协议
reload: ƒ reload()  //刷新网页
replace: ƒ ()
search: ""
toString: ƒ toString()
valueOf: ƒ valueOf()
Symbol(Symbol.toPrimitive): undefined
__proto__: Location
location.assign('链接')  //跳转

dociment(当前页面)

dociment代表当前页面,HTML DOM文档树

document.title  //获得当前页面的title  并且可以修改
"Title"

获取具体的文档树节点

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js2.js"></script>
</head>
<body>

<dl id ="app">
    <dt>JAVA</dt>
    <dd>JAVASE</dd>
    <dd>JAVAEE</dd>
</dl>
<script>
    var Dl = document.getElementById('app');
</script>

</body>
</html>

获取cookie

document.cookie

劫持cookie原理

服务器端可以设置cookie:httpOnly

history

代表浏览器的历史记录

history.back() //后跳

history.forward()  //前跳

操作DOM对象

DOM:文档对象模型

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

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

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

获得DOM节点

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="father">
    <h1>标题一</h1>
    <p id="p1">p1</p>
    <p class="p2">p2</p>
</div>

<script>
    //对应css选择器
    var h = document.getElementsByTagName('h1');
    var h2 = document.getElementById('p1');
    var h3 = document.getElementsByClassName('p2');
    var h4 = document.getElementById('father');
    //father.children 获取子节点信息
    //father.firstChild
    //father.lastChild
</script>

</body>
</html>

更新节点

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<strong></strong>
<div id="id1"></div>
<script>
    var id1 = document.getElementById('id1');
    id1.innerText='123'//修改文本的值
    id1.innerHTML='<strong>123</strong>'//超文本语言 可以解析html语言
    id1.style.color='red';//设置成红色
    id1.style.fontSize='200px'//设置字体大小
    id1.style.padding='2em'//修改内距大小
</script>
</body>
</html>

删除节点

步骤:

  • 先获取父节点,在通过父节点删除自己
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<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(p1);    
</script>

</body>
</html>

删除节点的时候children是动态变化的

插入节点

获得了某个dom节点,通过innerHTML就可以增加一个元素,但是已经有元素了,我们就不能这么干了会覆盖,这就要使用追加:

添加已存在的节点:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<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'),//已存在的节点
        list = document.getElementById('list');
    list.appendChild(js);//追加到后面
</script>
</body>
</html>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HSraaAwo-1617954761148)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210409140759898.png)]

添加一个新的节点:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<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'),//已存在的节点
        list = document.getElementById('list'),
        new1 = document.createElement('p');//创建一个新标签
    list.appendChild(js);//追加到后面
    new1.id = 'new1';
    new1.innerText = 'hello';
    list.appendChild(new1);
</script>
</body>
</html>

通过标签插入:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="" type="text/css">
    <script type="text/javascript" src=""></script>
</head>
<body>

<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'),//已存在的节点
        list = document.getElementById('list'),
        new1 = document.createElement('p');//创建一个新标签
    list.appendChild(js);//追加到后面
    new1.id = 'new1';
    new1.innerText = 'hello';
    list.appendChild(new1);
    //创建一个标签节点 可以设置任意的值
    var MyScript = document.createElement('script');
    MyScript.setAttribute('type','text/javascript');
    list.appendChild(MyScript);
    //可以创建一个style标签节点
    var Mystyle = document.createElement('style');
    Mystyle.setAttribute('type','text/css');
    Mystyle.innerHTML = 'body{background-color: chartreuse}';//设置标签内容
    document.getElementsByTagName('head')[0].appendChild(Mystyle);
</script>
</body>
</html>

将一个新的节点插入到一个节点前

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="" type="text/css">
    <script type="text/javascript" src=""></script>
</head>
<body>

<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 ee = document.getElementById('ee');
    var js = document.getElementById('js');
    var list = document.getElementById('list');
    //将一个新的节点插入目标节点前
    list.insertBefore(js,ee);
</script>
</body>
</html>

操作表单(验证)

form DOM树

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

目的:提交信息

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<form action="post">
    <p><span>用户名: </span><input type="text" id="usename"></p>
    <!--多选框的值,就是定义好的value值-->
    <p>
        <span>性别: </span>
        <input type="radio" name="sex" value="man" id="boy"><input type="radio" name="sex" value="women" id="gril"></p>
</form>
<script>
    var input_text = document.getElementById('usename');
    var boy_radio = document.getElementById('boy');
    var gril_radio = document.getElementById('gril');
    //得到输入框的值
    input_text
    //修改输入框的值
    input_text = '123';
    //对于单选框多选框 .value 只能拿到设定的值
    boy_radio.checked //查看返回的结果是否为true
</script>
</body>
</html>

提交表单(md5加密)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--MD5工具类-->
</head>
<body>
<!--表单绑定提交事件
onsubmit 绑定一个提交检测的函数  true false
将这个结果返回给表单,使用onsubmit 接受
-->
<form action="#" method="post" onsubmit="return aaa()">
    <p><span>用户名: </span><input type="text" id="usename" name="username"></p>
    <p><span>密码: </span><input type="text" id="in-password"></p>
    <input type="hidden" id="md5-password" name="password">
    <!--<input type="submit">-->
    <!--绑定事件 onclick 被点击的时候-->
    <button type="button">提交</button>
</form>
<script>
    function aaa(){
        var umane = document.getElementById('usename');
        var pwd = document.getElementById('in-password');
        var md5pwd = document.getElementById('md5-password');
        console.log(umane.value);
        //MD5算法
        md5pwd.value = md5(pwd.value);
        //true就是提交通过 false就是阻止提交
        return true;
    }
</script>
</body>
</html>

jQuery

JAVAScript和

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

获取jQuery

下载或者使用在线CDN

$(选择器).事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
</head>
<body>
<!--
公式: $(selector).action()
-->
<a href="" id="text-jquery">点我</a>
<script>
    document.getElementById('text-jquery');
    //选择器就是css选择器
    $('#text-jquery').click(function (){
        alert(1);
    })
</script>

</body>
</html>

选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    //原生js
    //标签
    document.getElementsByTagName();
    //id
    document.getElementById();
    //类
    document.getElementsByClassName();

    //jQuery css中的选择器都能使用
    $('p').click()//标签选择器
    $('#id1').click()//id选择器
    $('.class1').click()//class选择器
</script>
</body>
</html>

事件

鼠标事件、键盘事件、陀螺仪事件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-brWgpdN8-1617954761150)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20210409152229479.png)]

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #divMove{
            width: 500px;
            height: 500px;
            border: 1px solid red;
        }
    </style>
</head>
<body>
<!--获取鼠标当前的坐标-->
mouse: <span id="mouseMove"></span>
<div id="divMove">
在这里移动鼠标试试
</div>
<script>
    //当网页元素加载完毕后,响应事件
    // $(document).read(function (){
    //
    // })
    $(function (){
        $('#divMove').mousemove(function (e){
            $('#mouseMove').text('x:'+e.pageX+' y'+e.pageY);
        })
    });
</script>

</body>
</html>

操作DOM元素

$('#text-ul li[name="python"]').text();//获得值
$('#text-ul li[name="python"]').text('');//设置值
$('#text-ul).html();//获得值
$('#text-ul).html('');//设置值

css操作

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

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

$('#text-ul li[name="python"]').show();//显示
$('#text-ul li[name="python"]').hide();//隐藏

娱乐测试

$(window).width();//宽度
$(window).heigth();//高度

未来ajax()

$('form').ajax();

#mouseMove’).text(‘x:’+e.pageX+’ y’+e.pageY);
})
});

```

操作DOM元素

$('#text-ul li[name="python"]').text();//获得值
$('#text-ul li[name="python"]').text('');//设置值
$('#text-ul).html();//获得值
$('#text-ul).html('');//设置值

css操作

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

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

$('#text-ul li[name="python"]').show();//显示
$('#text-ul li[name="python"]').hide();//隐藏

娱乐测试

$(window).width();//宽度
$(window).heigth();//高度

未来ajax()

$('form').ajax();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值