Java教程

javascript-web APIs

本文主要是介绍javascript-web APIs,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

web APIs和JS的基础关联性

Web APIs
  • 主要学习DOM和BOM
  • js独有部分
  • 页面交互效果
  • js的应用
API:应用程序编程接口,给程序员提供的一种工具,以便轻松的实现想要完成的功能。 web API:是浏览器提供的一套操作浏览器功能和页面元素的AP I(BOM和DOM)   总结:
  1. API是为我们程序员提供一个接口,帮助实现某种功能
  2. web API主要是针对于浏览器提供的接口,主要针对浏览器做交互效果
  3. web API一般都有输入和输出(函数的传参和返回值),web API很多都是方法(函数)
DOM 文档对象模型,处理可扩展标记语言(html/xml)的标准编程接口。 通过这些DOM接口可以改变网页的内容和结构等  

如何获取页面的元素

根据ID获取
<body>
    <div id="time">
        2019-9-9
    </div>
    <script>
        //1.因为我们文档页面从上往下加载,所以先得有标签,所以script写到标签下面
        //2.get获得element元素by通过驼峰法命名
        //3.参数id是大小写敏感的字符串
        //4.返回的是一个元素对象
        var timer = document.getElementById('time');
        console.log(timer);
        //5.console.dir打印我们返回元素对象,更好的查查看里面的属性和方法
        console.dir(timer);
    </script>
</body>

根据标签名获取

<ul>
        <li>知否知否,应是绿肥红瘦1</li>
        <li>知否知否,应是绿肥红瘦2</li>
        <li>知否知否,应是绿肥红瘦3</li>
        <li>知否知否,应是绿肥红瘦4</li>
        <li>知否知否,应是绿肥红瘦5</li>
    </ul>
    <ol id="ol">
        <li>哈哈哈哈哈哈哈</li>
        <li>哈哈哈哈哈哈哈</li>
        <li>哈哈哈哈哈哈哈</li>
        <li>哈哈哈哈哈哈哈</li>
        <li>哈哈哈哈哈哈哈</li>
    </ol>
    <script>
        //返回的是 获取过来元素对象的集合 以为数组的形式存储
        var lis = document.getElementsByTagName('li');
        console.log(lis);
        console.log(lis[1]);
        //可以循环遍历发音里面的元素,用for循环
        //如果里面只有一个li,返回的还有一个伪数组的形式
        //如果里面没有li,则返回的是一个空的伪数组
        //element.getElementsByTagName('标签名');父元素一定是一个单独的元素
        var ol = document.getElementById('ol');
        console.log(ol.getElementsByTagName('li'));

    </script>

根据类名来获得

<div class="box">盒子1</div>
    <div class="box">盒子2</div>
    <div id="nav">
        <ul>
            <li>首页</li>
            <li>产品</li>
        </ul>
    </div>
    <script>
        //1.getElementsByClassName根据类名获得某些元素集合
        var boxs = document.getElementsByClassName('box');
        console.log(boxs);
        //2.querySelector 返回制定选择器的第一个元素对象 选择器要加符号:类加. id加#
        var firstbox = document.querySelector('.box');
        console.log(firstbox);
        var nav = document.querySelector('#nav');
        console.log(nav);
        var li = document.querySelector('li');
        console.log(li);
        //3.querySelectorAll()返回制定选择器所有元素的集合
        var allbox = document.querySelectorAll('.box');
        console.log(allbox);
获取body和html
<script>
        //1.获取body元素
        var bodyele = document.body;
        console.log(bodyele);
        //2.获取html元素
        var htmlele = document.documentElement;
        console.log(htmlele);
    </script>
事件实行的步骤
  1. 获取事件源
  2. 注册事件(绑定事件)
  3. 添加事件处理程序
<div>123</div>
    <script>
        //执行事件步骤
        //点击div控制台输出 我被选中了
        //1.获取事件源
        var div = document.querySelector('div');
        //添加事件
        //div.onclick
        //添加处理程序
        div.onclick = function () {
            alert('我被选中了');
        }
    </script>

操作元素

改变元素的内容
 <button>显示当前系统时间</button>
    <div>TIME</div>
    <p>123456</p>
    <script>
        //当我们点击按钮,div里面的文字会发生变化
        //1.获取元素
        var btn = document.querySelector('button');
        var div = document.querySelector('div');
        //2.注册事件
        btn.onclick = function () {
            div.innerText = getdate();
        }
        function getdate() {
            var date = new Date();
            var year = date.getFullYear();
            var month = date.getMonth() + 1;
            var dates = date.getDate();
            var arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
            var day = date.getDay();
            return '今天是' + year + '年' + month + '月' + dates + '日' + arr[day];
        }
        //我们元素可以不用添加事件
        var p = document.querySelector('p');
        p.innerText = getdate();
    </script>

<div></div>
    <p>
        我还是那要
        <span>123</span>
    </p>
    <script>
        //innerText和innerhtml的区别
        //1.innerText 不识别html标签 去除空格 换行
        var div = document.querySelector('div');
        // div.innerText = '<strong>今天是:</strong>2022';
        //2.innerHTML识别html标签 保留空格和换行
        div.innerHTML = '<strong>今天是:</strong>2022';
        //这两个属性是可读写的 可以获取元素里面的内容
        var p = document.querySelector('p');
        console.log(p.innerText);
        console.log(p.innerHTML);

    </script>

常用元素的属性操作

<button id="ldh">刘德华</button>
    <button id="zxy">张学友</button>
    <img src="images/ldh.jpg" alt="" title="刘德华">
    <script>
        //修改元素属性 src
        //1.获取元素
        var ldh = document.getElementById('ldh');
        var zxy = document.getElementById('zxy');
        var img = document.querySelector('img');
        //2.注册事件
        zxy.onclick = function () {
            img.src = 'images/zxy.jpg';
            img.title = '张学友';
        }
        ldh.onclick = function () {
            img.src = 'images/ldh.jpg';
            img.title = '刘德华';
        }
    </script>
//分时段输出不同文字和图片
    <img src="images/morning.jpg" alt="">
    <div>早上好</div>
    <script>
        //案例分析
        // 根据系统不同时间来判断,所以需要用到日期内置对象
        //利用分支语句来设置不同的图片
        //需要一个图片,并且根据时间修改图片,就需要用到操作元素src属性
        //需要一个div元素,显示不同的问候语,修改内容即可
        //1.获取元素
        var img = document.querySelector('img');
        var div = document.querySelector('div');
        //2.获得当前小时数
        var date = new Date();
        var h = date.getHours();
        //3.判断小时数改变图片和文字信息
        if (h < 12) {
            img.src = 'images/morning.jpg';
            div.innerHTML = '早上好,一年之际在于晨';
        } else if (h < 18) {
            img.src = 'images/afternoon.jpg';
            div.innerHTML = '中午好,养好精神下午继续工作';
        } else {
            img.src = 'images/night.jpg';
            div.innerHTML = '晚上好,早点睡哦';
        }
    </script>

表单元素的属性操作

<button>按一下</button>
    <input type="text" value="输入内容">
    <script>
        //1.获取元素
        var btn = document.querySelector('button');
        var input = document.querySelector('input');
        //2.注册事件处理程序
        btn.onclick = function () {
            //inpur.innerHTML=‘’这个是普通盒子 比如div标签里面的
            //表单里面的值 文字内容用value来修改的
            input.value = '我已经点过来';
            //如果想要某个表单被禁用来不能再点击 disabled 我们想要按钮禁用
            btn.disabled = true;
            this.disabled=true;
            //this指向事件函数的调用者 btn

        }
    </script>

仿京东登陆界面

  1. 核心思路:点击眼睛按钮,把密码框类型改为文本框就可以看见里面的密码
  2. 一个按钮两个状态,点击一次切换为文本框,继续点击一次跟换为密码框
  3. 算法:利用一个flag变量,来判断flag的值,如果是1就切换为文本框,flag设置为0,如果是0就切换为密码框,flag设置为1
 <style>
        .box {
            position: relative;
            width: 300px;
            border-bottom: 1px solid #ccc;
            margin: 100px auto;
        }

        .box input {
            width: 370px;
            height: 30px;
            border: 0;
            outline: none;

        }

        .box img {
            position: absolute;
            top: 10px;
            right: 2px;
            width: 12px;


        }
    </style>


  <div class="box">
        <label for="">
            <img src="images/bi.jpg" alt="" id="eye">
        </label>
        <input type="password" name="" id="pwd">
    </div>
    <script>
        //1.获取元素
        var eye = document.getElementById('eye');
        var pwd = document.getElementById('pwd');
        //2.注册事件 处理程序
        var flag = 0;
        eye.onclick = function () {
            //点击一次,flag一定要变化
            if (flag == 0) {
                pwd.type = 'text';
                eye.src = 'images/zheng.jpg';
                flag = 1;
            } else {
                pwd.type = 'password';
                eye.src = 'images/bi.jpg';
                flag = 0;
            }

        }
    </script>

样式属性修改操作

div {
            width: 100px;
            height: 100px;
            background-color: pink;
        }

    <div></div>
    <script>
        //1.获取元素
        var div = document.querySelector('div');
        //2.注册事件 处理
        div.onclick = function () {
            this.style.backgroundColor = 'blue';
            this.style.width = '400px';
        }
    </script>
关闭淘宝二维码案例
  1.  核心思路:利用样式的显示和隐藏完成,display:none隐藏元素display:block显示元素。
  2. 点击按钮,就让这个二维码盒子隐藏起来即可
 
 .box {
            position: relative;
            width: 74px;
            height: 88px;
            border: 1px solid #ccc;
            margin: 100px auto;
            font-size: 12px;
            text-align: center;
            color: #f40;
            display: block;
        }

        .box img {
            width: 60px;
            margin-top: 5px;
        }

        .close-btn {
            position: absolute;
            top: -1px;
            left: -16px;
            width: 14px;
            border: 1px solid #ccc;
            line-height: 14px;
            font-family: Arial, Helvetica, sans-serif;
            cursor: pointer;


        }

<div class="box">
        淘宝二维码
        <img src="images/tb.png" alt="">
        <i class="close-btn">X</i>

    </div>
    <script>
        //1.获取元素
        var btn = document.querySelector('.close-btn');
        var box = document.querySelector('.box');
        //2.注册事件  程序处理
        btn.onclick = function () {
            box.style.display = 'none';
        }
    </script>

className的使用

 div {
            width: 100px;
            height: 100px;
            background-color: pink;
        }

        .change {
            width: 200px;
            height: 200px;
            background-color: blueviolet;
        }
   <div class="first">
        文本
    </div>
    <script>
        var test = document.querySelector('div');
        test.onclick = function () {
            //可以通过修改元素的className更改元素的样式 适用于样式较多的情况
            // this.className = 'change';
            //如果想要保留原先的类名,我么可以使用多类选择器
            this.className = 'first change';
        }
    </script>
    
注:
  • 如果样式修改较多,可以采取操作类名方式更改元素样式
  • class因为是个保留字,因此使用className来操作元素类名属性
  • className会直接更改元素的类名,会覆盖原先的类名。
案例分析
  1. 首先判断的事件是表单丢失焦点onblur
  2. 如果输入正确则提示正确的信息颜色为绿色小图标变化
  3. 如果输入不是6到16位,则提示错误信息颜色为红色小图标变化
  4. 因为里面变化样式较多,我们采className修改样式
div {
            width: 600px;
            margin: 100px auto;

        }

        .message {
            display: inline-block;
            font-size: 12px;
            color: #999;
            background: url() no-repeat left center;
            padding-left: 20px;
        }

        .wrong {
            color: red;
        }

        .right {
            color: green;
        }    
    <div class="register">
        <input type="password" class="ipt" id="">
        <p class="message">请输入6~16位密码</p>
    </div>
    <script>
        //1.获取元素
        var ipt = document.querySelector('.ipt');
        var message = document.querySelector('.message');
        //2注册事件 失去焦点
        ipt.onblur = function () {
            //根据表单里的值长度
            if (this.value.length < 6 || this.value.length > 16) {
                message.className = 'message wrong';
                message.innerHTML = '您输入的位数不对请输入6~16位数';
            } else {
                message.className = 'message right';
                message.innerHTML = '您输入正确';
            }
        }
    </script>

总结

 

 

这篇关于javascript-web APIs的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!