03-javaScript

1. 完成页面定时弹出广告

1.1 需求分析

​ 在我们打开网站的时候,过了3秒钟,弹出了一个广告,这个广告显示了3秒钟,消失了

1.2 技术分析

​ window对象是浏览器最顶层的对象 我们可以直接在我们的页面使用它里面的方法和属性

  1. 涉及到的事件 onload
  2. 过了3秒钟之后,做一件事 setTimeout()
  3. 弹出广告, 控制元素的显示和隐藏

【JS的定时操作】

setInterval()按照指定的周期(以毫秒计)来调用函数或计算表达式。
setTimeout()在指定的毫秒数后调用函数或计算表达式。
clearInterval()取消由 setInterval() 设置的 timeout。
clearTimeout()取消由 setTimeout() 方法设置的 timeout。

【HTML中的显示与隐藏】

css属性: display
    显示: block
    隐藏: none;

1.3 步骤分析

  1. 确定事件 onload
  2. 事件通常都会触发一个函数
    1. 启动定时器,3秒之后显示广告
      1. 首先都获取广告所在的img
      2. 修改它的属性值 style.display=”block”

取消定时器

clearInterval()取消由 setInterval() 设置的 timeout。
clearTimeout()取消由 setTimeout() 方法设置的 timeout。

1.4 代码实现

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <!--script标签-->
        <script>
            var id_Interval;
            function showAd(){
                //获取要操作的元素
                var ad = document.getElementById("ad"); //<img>
                //是不是要操作元素里面的显示
//              alert(ad.style);
                ad.style.display="block";

                console.log("显示方法被调用了...")
//              setTimeout("hideAd()",3000);

/************************************************************************/

                //这里需要想办法取消定时器
                clearInterval(id_Interval);
                //让广告显示3秒钟之后再去执行
                setTimeout("hideAd()",3000); 
            }
            function hideAd(){
                var ad = document.getElementById("ad"); //<img>
                //是不是要操作元素里面的显示
//              alert(ad.style);
                ad.style.display="none";
            }


            window.onload = function(){
                //三秒之后显示广告
//              setTimeout("showAd()",3000);
                //setTimeout(showAd,3000); //传入的是方法的应用
            //  setTimeout(showAd(),30000); // 这个调用有问题


                id_Interval = setInterval("showAd()",3000); //启动了一个定时器


            }

        </script>
    </head>
    <body>
        <img id="ad" style="display: none; width: 100%;" src="../products/f001a62f-a49d-4a4d-b56f-2b6908a0002c_g.jpg" />
    </body>
</html>
BOM: 浏览器对象模型

​ window : 浏览器最顶层的对象,它的方法和属性可以直接拿来使用

​ setInterval

​ setTimeout

​ clearInterval

​ clearTimeout

​ navigator: 获取浏览器的一些信息

​ history: 操作的历史记录

​ location: 浏览器地址栏

​ screen; 屏幕

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script>

            alert(window.screenLeft );
            var flag = window.confirm("您确定要退出我们的网站吗?");
//          alert(flag);

//          window.prompt("ni hao:")

            //浏览信息
        /*  alert(navigator.appCodeName);
            alert(navigator.appName);

            //screen
            alert(screen.width);
            alert(screen.height);*/

            function goto(){
                location.href="http://www.baidu.com";
            }

        </script>
    </head>
    <body>
        <input type="button" onclick="goto()" value="跳转去百度"/>
    </body>
</html>

2. 完成完成表单的校验

2.1 需求分析

当用户输入的时候,我们需要对用户输入的内容进行表单的验证,这样可以减轻对服务器的压力

2.2 技术分析

【HTML中innerHTML属性】

通过查找手册,发现Element元素有一个innnerHTML属性,这个属性可以填写一段html代码

innerHTML = "<font color='red'>这是一段测试的文本内容</font>"

【JS中的常用事件】

onfocus() : 获取到焦点

onblur(): 失去焦点

onkeyup(): 当用户输入完成之后,按键弹起触发的事件.

2.3 步骤分析

  1. 确认事件 onsubmit 并且注意οnsubmit=”return checkForm()”

  2. 实现checkForm这个方法

    1. 对用户名做非空判断,
    2. 对用户名进行输入长度判断
    3. 输入的密码长度不能少于8位
    4. 两次输入的密码必须一样
    5. 邮箱格式需要正确sdfasdf@qq.com
  3. 当用户输入有问题的时候, 需要在后面给出友好提示

    1. 修改span的内容 使用innerHTML

2.4 代码实现

<script>

            /*
             1. 确认事件 onsubmit  并且注意onsubmit="return checkForm()"
                2. 实现checkForm这个方法
                   1. 对用户名做非空判断,
                   2. 对用户名进行输入长度判断
                   3. 输入的密码长度不能少于8位
                   4. 两次输入的密码必须一样
                   5. 邮箱格式需要正确sdfasdf@qq.com.cn
                3.  当用户输入有问题的时候, 需要在后面给出友好提示
                   1. 修改span的内容 使用innerHTML

             */
            function showTips(){
                var span = document.getElementById("spanId");
                span.innerHTML = "<font color='red'>用户名不能为空,长度须大于6</font>"
            }

            function checkUsername(){

                //1. 对用户名做非空判断,
                //先得获取用户输入
                var username = document.getElementById("username");
                //alert(username.value);
                var uValue = username.value;
                //类型的转换
//              var i = 123;
//              alert(i.toString());
//              var j = "hello world";
//              var m = j.substring(0,6);
//              alert(m);

                //对用户名进行输入长度判断
                if(uValue == "" || uValue.length < 6){
                    //在后面的span中填入给用户温馨提示
                    /*
                      1.首先获取span
                      2. 修改span的innerHTML属性  
                     */
                    var span = document.getElementById("spanId");
                    span.innerHTML = "<font color='red'>用户名不合法</font>"

                    return false;
                }else{
                    var span = document.getElementById("spanId");
                    span.innerHTML = "<font color='red'>恭喜您,合法</font>"
                }

            }

            function checkForm(){
                //1. 对用户名做非空判断,
                //先得获取用户输入
                var username = document.getElementById("username");
                //alert(username.value);
                var uValue = username.value;
                //类型的转换
//              var i = 123;
//              alert(i.toString());
//              var j = "hello world";
//              var m = j.substring(0,6);
//              alert(m);

                //对用户名进行输入长度判断
                if(uValue == "" || uValue.length < 6){
                    //在后面的span中填入给用户温馨提示
                    /*
                      1.首先获取span
                      2. 修改span的innerHTML属性  
                     */
                    var span = document.getElementById("spanId");
                    span.innerHTML = "<font color='red'>用户名不合法</font>"

                    return false;
                }
                /*
                    输入的密码长度不能少于8位
                    先获取到密码框输入的内容
                    判断它的长度是否小于8
                   4. 两次输入的密码必须一样
                    获取重复密码框的内容
                 * */
                var pValue = document.getElementById("password").value;
                var rePValue = document.getElementById("repassword").value;

                if(pValue.length < 8){
                    var span = document.getElementById("password_spanId");
                    span.innerHTML = "<font color='red'>密码长度不够8位</font>"
                    return false;
                }else{
                    var span = document.getElementById("password_spanId");
                    span.innerHTML="";
                }

                if(pValue != rePValue){
                    var span = document.getElementById("repassword_spanId");
                    span.innerHTML = "<font color='red'>两次输入密码不一致</font>"
                    return false;
                }else{
                    var span = document.getElementById("repassword_spanId");
                    span.innerHTML = ""
                }
                //邮箱校验 正则表达式
                var email = document.getElementById("email").value;
                //正则表达式
                /*var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/; 
                if(! reg.test(email)){
                    alert("邮箱表达式有问题")   
                    return false;
                }*/
                if(!checkEmail(email)){
                    return false;   
                }


                return true;
            }
        </script>

3. 表格隔行换色

3.1 需求分析

3.2 技术分析

  1. 如何来获取表格中所有的行
  2. 如何来修改表格中的颜色

3.3 步骤分析

3.4 代码实现

        <script>
        /*
         1. 确定事件,文档加载onload
         2. 事件要触发函数
                获取到表格
                获取到所有的行
                    然后对奇数行改变 red
                    对偶数行改变成黄色
         */
        window.onload = function(){
            var table1 = document.getElementById("table1");
//          var rows = table1.rows;
            //
            var rows = table1.tBodies[0].rows
            //alert(rows);
            for(var i = 0 ; i< rows.length; i++){
                var row = rows[i];
                if(i%2 == 0){
                    row.style.backgroundColor = "yellow";
                }else{
                    row.style.backgroundColor = "red";
                }
            }

        }

    </script>

4. 复选框的全选和全不选

4.1 需求分析

4.2 技术分析

​ 【HTML中checked属性】

找到checkbox中的checked中的属性

4.3 步骤分析

/*
                1.确定事件:onclick 
                2.实现函数也声明
                    获得checkbox
                    获取当前点击之后的状态checked 还是非
            */
        function selectAll(){
            var ckall = document.getElementById("ckall")
//          alert(ckall.checked);
            var checkedFlag = ckall.checked;
            var ckones = document.getElementsByName("ckone");


            for (var i=0; i<ckones.length; i++) {
                var ckone = ckones[i];
                ckone.checked = checkedFlag;
            }
        }

5. 省市联动效果

5.1 需求分析

5.2 技术分析

【HTML中的DOM操作】

CRUD,增删改查

DOM: Document Object Model 文档对象模型

getElementById()返回带有指定 ID 的元素。
getElementsByTagName()返回包含带有指定标签名称的所有元素的节点列表(集合/节点数组)。
getElementsByClassName()返回包含带有指定类名的所有元素的节点列表。
appendChild()把新的子节点添加到指定节点。
removeChild()删除子节点。
replaceChild()替换子节点。
insertBefore()在指定的子节点前面插入新的子节点。
createAttribute()创建属性节点。
createElement()创建元素节点。
createTextNode()创建文本节点。
getAttribute()返回指定的属性值。
setAttribute()把指定属性设置或修改为指定的值。

【JS中的数组对象】

            var cities = new Array(4);
            cities[0] = new Array("深圳市","东莞市","广州市","佛山市"); //广东省
            cities[1] = new Array("哈尔滨","齐齐哈尔市","漠河"); //黑龙江
            cities[2] = new Array("黄石市","黄冈市","武汉市","孝感市"); //湖北省
            cities[3] = new Array("拉萨市","阿里地区","八一","塔尔村"); //西藏

5.3 步骤分析

5.4 代码实现

<script>
            /*
             先准备数据
             * */
            var cities = new Array(4);
            cities[0] = new Array("深圳市","东莞市","广州市","佛山市"); //广东省
            cities[1] = new Array("哈尔滨","齐齐哈尔市","漠河"); //黑龙江
            cities[2] = new Array("黄石市","黄冈市","武汉市","孝感市"); //湖北省
            cities[3] = new Array("拉萨市","阿里地区","八一","塔尔村"); //西藏


            /*
             首先还是确认事件onchange
             事件对应所要触发的方法 changeProvince()
             */
            function changeProvince(){
                //得到要操作的select
                var selectProvince = document.getElementById("selectProvince");
                //判断它当前被选中的值
                var index = selectProvince.value;
                //从数组中去找到对应的城市数组
                var selectCities = cities[index];


                //找到放置城市信息的select
                var selectCity = document.getElementById("selectCity");

                //清空select中的option
                selectCity.options.length = 0;
                //遍历是城市信息数组
                for(var i = 0 ; i<selectCities.length; i++){
                    var citiName = selectCities[i];
                    //alert(citiName);//
                    //创建子节点
                    var option1 = document.createElement("option");//<option></option>

                    //创建文本节点
                    var textNode = document.createTextNode(citiName);
                    //将文本节点添加到option中
                    option1.appendChild(textNode); // <option>东莞市</option>

                    //将封装好的option添加到selectCity中
                    selectCity.appendChild(option1);
                }                               
            }
        </script>

6. 使用JS控制下拉列表左右选择

6.1 需求分析:

6.2 步骤分析:

6.3 代码实现:

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

        <script>
            /*
                1.确认事件  onclick
                2.事件要触发函数: selectOne
                    获取选中的商品
                    将选中的商品添加到左边
            */
            function selectOne(){
                //获取选中的商品
                    //首先要找到select
                var selectRight = document.getElementById("selectRight");
                //找到左边的select
                var selectLeft = document.getElementById("selectLeft");

                //得到所有的options
                var options = selectRight.options;
                for (var i = options.length - 1; i >= 0; i--) {
                    var oneOption = options[i];
                    //找到被选中的项
                    if(oneOption.selected){
                        //alert(oneOption.value);
                        //将这个选中的option添加到左边
                        selectLeft.appendChild(oneOption);
//                      break;
                    }
                }
            }


            function selectAll(){
                //获取选中的商品
                    //首先要找到select
                var selectRight = document.getElementById("selectRight");
                //找到左边的select
                var selectLeft = document.getElementById("selectLeft");

                //得到所有的options
                var options = selectRight.options;
                for (var i = 0; i < options.length; i++) {
                    var oneOption = options[i];
                    //找到被选中的项
//                  if(oneOption.selected){
                        //alert(oneOption.value);
                        //将这个选中的option添加到左边
                        selectLeft.appendChild(oneOption);
//                      break;
                    i--;
//                  }
                }
            }
        </script>
    </head>
    <body>

        <table width="450px" border="1px">
            <tr>
                <td>分类名称:</td>
                <td>
                    <input type="text" value="手机数码" />
                </td>
            </tr>
            <tr>
                <td>分类描述:</td>
                <td>
                    <input type="text" value="这里头满满的都是肾" />
                </td>
            </tr>
            <tr>
                <td>分类商品:</td>
                <td>
                    <span style="float: left;">
                        已有商品:<br />
                        <select multiple="multiple" id="selectLeft">
                            <option>肾6</option>
                            <option>肾7</option>
                            <option>肾8</option>
                            <option>锤子</option>
                        </select>
                        <br />
                        <a href="#">&gt;&gt;</a><br />
                        <a href="#">&gt;&gt;&gt;</a>
                    </span>

                    <span style="float: right;border: 1px solid red;" >
                        未有商品:<br />
                        <select multiple="multiple" id="selectRight" ondblclick="selectOne()">
                            <option>三星note7</option>
                            <option>小米Mix</option>
                            <option>华为meta9</option>
                            <option>波导手机</option>
                        </select>
                        <br />
                        <a href="#" onclick="selectOne()">&lt;&lt;</a><br />
                        <a href="#" onclick="selectAll()">&lt;&lt;&lt;</a>
                    </span>
                </td>
            </tr>
            <tr>

                <td colspan="2">
                    <input type="submit" value="提交" />
                </td>
            </tr>
        </table>

    </body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值