JavaScript的运用1

一.JS的简介

js全称(javascript)中文是java脚本的意思 。它的由来(在互联网刚兴起的时候,网络速度比较慢,而体验又是放在服务器端的,所以用户体验度非常差,为了了解这一难题,网景公司发明了livescript liverscript主要把表单验证功能从后台提升到了前端,因为不依赖网络,所以用户体验比较好。但是由于知名度比较差,知道的人很少,后来由于sum公司的java语言一飞冲天,爆红编程世界,为了跟风,博取知名度,网景公司把livescript 改成javascript. 后来微软眼红网景公司的成就,就发明了jscript。但是正因为此,导致了js的标准不同,所以给个大浏览器厂家带来了很大的麻烦。为了有一个统一的标准,js被提交到一个ecma组织,也正因为此,后来的js都是采用ecma标准(ECMAScript))
JavaScript 是属于网络的脚本语言!
JavaScript 被数百万计的网页用来改进设计、验证表单、检测浏览器、创建cookies,以及更多的应用。
JavaScript 是因特网上最流行的脚本语言。
JavaScript 很容易使用!你一定会喜欢它的!

注:JavaScript的一些基础知识

1.JavaScript用“//”表示注释,且每句话后用“;”分隔开;
2.Js里面的数据类型:字符串、数字、布尔、数组、对象、Null、Undefined
3.其定义局部变量时,前面要加“var“做标注,没有var时,默认为全局变量;
4.函数如何定义:
1) - 命名函数

 function 函数名(){
            函数体
    }

2) 匿名函数

<div style="width: 100px; height: 100px; border: 1px solid red"   onclick="javascript:location.href='http://www.baidu.com'">  baidu

5.alert(“要显示的内容")-------弹出一个警示框;
向页面的指定位置写入内容:
document.getElementById('userTip').inner HTML='<b style="color:red">用户名信息不能空</b>'
6.用“===”表示两者相等
用“==”时,会自动将字符串转换为整形进行比较
7.三元比较符:“(条件语句)?(满足条件返回的值):(不满足返回的值)“
str.length-----求某字符串的长度
8.BOM对象:
Windows: alert(), setInterval(), clearInterval()
location: href() --(跳转到指定的页面)
9.DOM:
常用的事件: onsubmit(特殊点, 一定要有boolean类型的返回值), onclick, onfocus, onblur, onchange,

二.JS的常规应用

10.节点
Document:整个html文件就称为一个document文档;
Element: 所有的标签都是Element元素;
Attribute: 标签里面的属性;

   <input type='text'> --- type
    <a href="xxxx"> -- href
    <a style="color:red">   ---- style

Text:百度

1

需求:
1). 用户在注册的时候会输入一些信息, 但是用户输入的内容有可能不合法, 会导致服务器端压力过大;
2). 当用户填写信息之后, 对填写的信息进行校验(前端校验, 只能防君子不能防小人)
-后台校验: 也是需要校验的;

需要掌握的技能:
1). 如何在加载页面时执行指定函数?
2). 如何获取指定元素对象?
3). 如何弹出一个警告框?

实现过程:首先我们要建立标签实现登陆界面,其次就是要使用(script)标签实现需求,具体程序如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        window.onload = function () {
            // 1. 获取用户输入的用户名的标签对象;
            var uEle = document.getElementById('username');
            alert(uEle);
            // 2. 获取这个对象里面的值;
            var uValue = uEle.value;
            alert(uValue);
//            弹出一个警示框
            alert("这是一个用户名!");
        }
    </script>
    
</head>
<body>
<form action="#" method="get">
    <!--get: 填写的信息会在url里面显示, 对于重要的数据来说是不安全的;
        post: 填写的信息不会在url里面显示
        -->
    用户名: <input type="text" name="username" placeholder="用户名" id="username"><br/>
    密码: <input type="password" name="passwd" placeholder="密码"><br/>
    <input type="submit" value="注册">

</form>
</body>

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.验证用户名和密码的合法性

需求:
1). 判断用户名是否为空?
2) 校验密码是否大于6位, 如果不满足则不合法?

实现步骤:
1. 确定事件类型onsubmit(常见事件类型的网址: http://www.w3school.com.cn/js/js_htmldom_events.asp);
2. 对这个事件绑定一个函数(执行的操作写在函数里面);
3. 函数的核心功能: 校验用户名是否为空?
- 1). 获取输入用户名标签提交的内容;
-2). if判断用户名是否为空?
- 3). 如果数据合法, 继续执行, 提交表单;
-4). 如果数据不合法, 不让表单提交? (显示弹出框报错) — alert

onsubmit用法:
onsubmit 事件会在表单中的确认按钮被点击时发生。当该事件触发的函数中返回false时,表单就不会被提交。
onsubmit经常用于表单验证,当"提交"按钮被点击时,依然会执行checkForm()函数,在checkForm()函数中,我们对表单输入框进行了空验证,如果用户名为空或密码不足六位,会弹出警告框,并return false,这样表单就不会提交(上面已经说到:当该事件触发的函数中返回false时,表单就不会被提交)。 同时,这里要注意onsubmit=“return checkForm();”,不能掉了return,否则表单永远会提交。

具体程序如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--<style></style>-->
    <!--<link>-->
    <script>
//  *****************************1. 校验用户名是否为空? ***************************
        // 定义一个函数
        function checkForm() {
//        1). 获取输入用户名标签提交的内容;
            var user = document.getElementById('username').value;
//        2). if判断用户名是否为空?
//        3). 如果数据合法, 继续执行, 提交表单;
//        4). 如果数据不合法, 不让表单提交? (显示弹出框报错) --- alert
            if (user === '') {
                alert("用户名不能为空!");
                return false;
            }

// ******************************2. 校验密码长度是否小于6 **************************
//
          var passwdlen = document.getElementById('passwd').value.length;
//            上边的方法是通过id来得到标签提交的内容,我们也可以通过name获得,不过相同name的可能存在多个,所以加上索引即可
//            var passwdlen = document.getElementsByName('passwd')[0].value.length;
            if (passwdlen < 6){
                alert("密码不合法: 长度小于6!");
                return false;
            }
        }
    </script>
</head>
<body>
<form action="#" method="get" onsubmit="return checkForm()">
    用户名: <input type="text" name="username" placeholder="用户名" id="username"><br/>
    密码: <input type="password" name="passwd" placeholder="密码" id="passwd"><br/>
    <input type="submit" value="注册">


</form>
</body>
</html>

1.当输入用户名为空,密码不管是否合法,点击注册按钮,会弹出下列警告
在这里插入图片描述在这里插入图片描述
2.当输入用户名合法,密码不合法时,点击注册按钮,会弹出下列警告
在这里插入图片描述在这里插入图片描述
3.当输入用户名合法,密码合法时,点击注册按钮,不会出现警告

3.点击按钮时切换图片

onclick事件表示当,当用户在元素上点击时,会改变其内容
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #sowing_map{
            width: 590px;
            height:500px;
            margin: 0 auto;
            text-align: center;
        }
    </style>
    
    <script>
        // 1. 定义一个变量, 控制图片的循环顺序;
        var i = 1;
        function  changeImg() {
            // 2. 当点击下一页时, i+1, 这个时候, 图片变成img2;
            i += 1;
            // 3.  修改img标签里面的src属性内容;
            document.getElementById('img').src = 'img/img' + i + '.jpg';
            // 4. 如果图片轮播结束, 从头开始轮播;
            if (i === 6){
                i = 0;
            }
        }

    </script>
</head>
<body>

<!--思路:
    1. 确定事件类型为onclick事件;
    2. 并跟对应的函数changeImg绑定在一起;
    3. 实现函数功能;
        1). 当点击下一页按钮之后, 修改img标签里面的src属性内容;
-->
<div id="sowing_map">
    <img src="img/img1.jpg" id="img">
    <input type="button" value="下一页" onclick="changeImg()">
</div>
</body>
</html>

这里实现的效果是每点击一下“下一页”,会切换图片,切换完所有图片后会从头开始
在这里插入图片描述

4.轮播图

需求:
实现界面的轮播图,即每隔固定时间换张图片
思路:
1. 确定事件类型为onclick事件;
2. 并跟对应的函数changeImg绑定在一起;
3. 实现函数功能;

具体程序如下:具体程序如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #sowing_map{
            width: 590px;
            height:500px;
            /*块级元素居中*/
            margin: 0 auto;
            /*行内元素居中*/
            text-align: center;
        }
    </style>

    <script>
        window.onload = function () {
            // 这里的时间单位是毫秒,每隔1s自动执行某一个函数,所以我们将器设置为100
            setInterval('changeImg()', 1000);
        };
        // 1. 定义一个变量, 控制图片的循环顺序;
        var i = 1;
        function  changeImg() {
            i += 1;
            // 2.  修改img标签里面的src属性内容;
            document.getElementById('img').src = 'img/img' + i + '.jpg';
            // 3. 如果图片轮播结束, 从头开始轮播;
            if (i === 6){
                i = 0;
            }
        }
    </script>
</head>
<body>

<div id="sowing_map">
    <img src="img/img1.jpg" id="img">
</div>
</body>
</html>

这里实现的效果是每个1秒,会自动切换图片库中的图片,播完后会从头开始
在这里插入图片描述

5.js的外部引入轮播图

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--
   Js的引入方式:
        - 内部引入: 直接在head标签里面的<script>写的内容;
        - 外部引入:<script src="js/main.js" ></script
     -->
    <link href="css/main.css" rel="stylesheet">
    <script src="js/main.js" ></script>
</head>
<body>

<div id="sowing_map">
    <img src="img/img1.jpg" id="img">
</div>
</body>
</html>

"css/main.css" 中的内容:

#sowing_map{
    width: 590px;
    height:500px;
    margin: 0 auto;
    text-align: center;

}

"js/main.js"中的内容:

 window.onload = function () {
            // 这里的时间单位是毫秒,每隔1s自动执行某一个函数,所以我们将器设置为100
            setInterval('changeImg()', 1000);
        };
        // 1. 定义一个变量, 控制图片的循环顺序;
        var i = 1;
        function  changeImg() {
            i += 1;
            // 2.  修改img标签里面的src属性内容;
            document.getElementById('img').src = 'img/img' + i + '.jpg';
            // 3. 如果图片轮播结束, 从头开始轮播;
            if (i === 6){
                i = 0;
            }
        }

6.定时弹出广告图片

需求:
实现网页定时弹出广告, 并定时取消弹出的广告;

步骤:
1. 在页面设置一个隐藏的图片; style=“display: none”
2. 确定事件类型为onload, 为其绑定一个函数;
3. 设置定时执行显示图片的函数showAd();
4. 编写定时任务里面的函数showAd()----
- 获取标签的样式display=‘block’;
- 清除显示广告的定时任务;
- 编写隐藏广告图片的定时任务;
5. 实现定时任务里面的函数hiddenAd();
- 获取标签的样式display=‘none’;
- 清除隐藏广告的定时任务;

程序:

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

<div id="ad">
    <img src="img/img7_ad.jpg" id="ad_img" style="display: none">

</div>
</body>
</html>

"css/main.css" 中的内容:

#ad{
    width: 1190px;
    height: 80px;
    margin: 0 auto;
    text-align: center;
}

"js/main.js"中的内容:

 window.onload = function () {

    //每隔1s执行显示广告的函数;
    // 由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。
    //(http://www.w3school.com.cn/jsref/met_win_setinterval.asp)
    // 在js的函数里面。 变量名没有var时, 是一个全局变量;
    adtime = setInterval('showAd()', 1000);
};

// 编写显示隐藏图片的函数
function showAd() {
    // 获取到广告图片对应的标签对象
    var adEle = document.getElementById('ad_img');
    //修改广告图片元素里面的style属性里面的display
    adEle.style.display = 'block';

    // 清除显示图片的定时操作;
    clearInterval(adtime);

    // 设置隐藏广告图片的定时任务;
    hiddentime = setInterval('hiddenAd()', 1000);
}
function hiddenAd() {
    // 获取到广告图片对应的标签对象
    var adEle = document.getElementById('ad_img');
    //修改广告图片元素里面的style属性里面的display
    adEle.style.display = 'none';
    //清除隐藏图片的定时任务;
    clearInterval(hiddentime);
}

实验结果为:加载该界面后,等待一秒后会出现下图,再过一秒会自动消失
在这里插入图片描述

7.使用聚焦和离焦事件验证用户注册信息

需求:
当用户进行用户名和密码填写时,给出相应的提示,输入完毕后,不管是否合法,都对用户进行告知

实现步骤:
1). 确定事件类型(onfocus-聚焦事件), 并为其绑定一个函数;
2). 确定事件类型(onblur-离焦事件), 并为其绑定一个函数;
具体程序:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        function showUserTip() {
            // 1. 获取标签对象;
            document.getElementById('userTip').innerHTML = '<b style="color: lightgray;">用户名不能为空</b>';
        }

        function checkUser() {
                //1. 离焦时判断用户名是否为空?
            var name = document.getElementById("user").value;
            // 2. 如果为空, 右边来一个红色的提示;
            // 3. 如果不为空, 则取消所有提示;
            if(name===""){
                document.getElementById("userTip").innerHTML = '<b style="color: red">用户名不能为空</b>'
            }
            else {
                document.getElementById("userTip").innerHTML = '<b style="color: green">ok</b>'
            }
        }
        function showPwdTip() {
             document.getElementById('PwdTip').innerHTML = '<b style="color: lightgray;">密码不能少于六位</b>';
        }
        function checkPwd() {

            var passwd = document.getElementById("pwd").value;
            if(passwd.length<=6){
                document.getElementById("PwdTip").innerHTML = '<b style="color: red">密码不能少于六位</b>'
            }
            else {
                document.getElementById("PwdTip").innerHTML = '<b style="color: green">ok</b>'
            }
        }

    </script>
</head>

<body>
<div id="bor">
<form action="#" method="get">
    用户名:<input type="text" id="user" placeholder="输入用户名" name="username" onfocus=" showUserTip()" onblur="checkUser()">
    <span id="userTip"></span><br/>

    密码:<input type="password" id="pwd" placeholder="输入密码" name="password" onfocus=" showPwdTip()" onblur="checkPwd()">
    <span id="PwdTip"></span><br/>
    <input type="submit" value="注册">
</form>
</div>
</body>
</html>

实现结果:当鼠标点击“用户名“那一栏时,后面会出现提示,
当鼠标点击到用户名栏外的地方,则会出现相应的结果提示。密码栏类似
在这里插入图片描述

8.表格的全选和全不选

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

    <script>
        function checkAll() {
            //1. 获取全选框对象
        var checkAll_ = document.getElementById("checkAll");
        //判断该单选框是否被选中,
//            2. 对编号前面的复选框的状态进行判断;
            //      - 如果状态为选中, 则设置所有的单选框为选中状态;
            //      - 如果状态为没有选中, 则设置所有的单选框为没有选中状态;
        if (checkAll_.checked){
             var checkones = document.getElementsByName("checkOne");
             for (var i=0;i<checkones.length;i++){
                 checkones[i].checked = true;
             }
         }else{
            //- 如果状态为未选中, 则设置所有的单选框为未选中状态;
                var checkones = document.getElementsByName("checkOne");
//                 依次遍历所有的单选框, 设置状态为选中
                for (var i=0;i<checkones.length;i++) {

                 checkones[i].checked = false;
             }
         }
    }

</script>
</head>

<body>
<table width="60%;" border="1px" cellpadding="5px" cellspacing="5px" style="margin: 0 auto">
    <caption style="color: blue ;font-size: xx-large"><span>用户信息</span></caption>

    <tr>
        <th colspan="4" style="width:95% ;text-align: center">
            <input type="submit" value="增加">
            <input type="submit" value="删除"></th>

    </tr>
    <tr>
        <th style="width: 10%"><input type="checkbox" id="checkAll" onclick="checkAll()"></th>
        <th style="width: 30%">编号</th>
        <th style="width: 30%">姓名</th>
        <th style="width: 30%">年龄</th>
    </tr>
    <tr>
        <th><input type="checkbox" name="checkOne"></th>
        <th>1</th>
        <th>张三</th>
        <th>22</th>
    </tr>
    <tr>
        <th><input type="checkbox" name="checkOne"></th>
        <th>2</th>
        <th>粉带</th>
        <th>12</th>
    </tr>
    <tr>
        <th><input type="checkbox" name="checkOne"></th>
        <th>3</th>
        <th>粉条</th>
        <th>32</th>
    </tr>
    <tr>
        <th><input type="checkbox" name="checkOne"></th>
        <th>4</th>
        <th>粉丝</th>
        <th>18</th>
    </tr>
    <tr>
        <th><input type="checkbox" name="checkOne"></th>
        <th>5</th>
        <th>粉猪</th>
        <th>19</th>
    </tr>


</table>
</body>
</html>

实验结果:左上角的选择按钮为全选或全不选框
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/forever_wen/article/details/82919716