欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaScript基础视频教程总结(131-140章)

程序员文章站 2023-09-07 16:22:38
所有基础课程链接: 1.JavaScript基础视频教程总结(001-010章) 2.JavaScript基础视频教程总结(011-020章) 3. JavaScript基础视频教程总结(021-030章) 4. JavaScript基础视频教程总结(031-040章) 5. JavaScript基 ......
<!doctype html>
<html>
<head>
    <meta charset="utf-8" />
    <title>131-140章总结</title>
</head>
<body>
    
<pre>
131. 定时器的应用1
</pre>
<style type="text/css">
#box1 {
    width: 100px;
    height: 100px;
    background-color: red;
    position: absolute;
    left: 0;
}
</style>
<button id="btn01">点击按钮以后box1向右移动</button>
<div class="" style="position: relative;height: 200px;">
    <div id="box1"></div>
</div>

<script type="text/javascript">
    console.log("第131");
    var box1 = document.getelementbyid("box1");
    var btn01 = document.getelementbyid("btn01");
    var timer1;
    btn01.onclick = function(){
        clearinterval(timer1);
        timer1 = setinterval(function(){
            var oldvalue = parseint(getstyle(box1,"left"));
            var newvalue = oldvalue + 10;
            if(newvalue > 800){
                newvalue = 800;
            }
            box1.style.left = newvalue + "px";
            if(newvalue == 800){
                clearinterval(timer1);
            }
        },30);
    };
    
    /*
     * 定义一个函数,用来获取指定元素的当前的样式
     * 参数:
     *      obj 要获取样式的元素
     *      name 要获取的样式名
     */
    
    function getstyle(obj , name) {
        if(window.getcomputedstyle){
            //正常浏览器的方式,具有 getcomputedstyle()方法
            return getcomputedstyle(obj , null)[name];
        } else {
            //ie8的方式,没有getcomputedstyle()方法
            return obj.currentstyle[name];
        }
    }
</script>

<pre>
132. 定时器的应用2
</pre>
<div class="" style="position: relative;height: 200px;">
    <button id="btn21">点击按钮以后box1向右移动</button>
    <button id="btn22">点击按钮以后box1向左移动</button>
    <br /><br />
    <div id="box21" style="width: 100px;height: 100px;background-color: #ddd;position: absolute;"></div>
</div>
<script type="text/javascript">
    console.log("第132");
    var box21 = document.getelementbyid("box21");
    var btn21 = document.getelementbyid("btn21");
    var btn22 = document.getelementbyid("btn22");
    //点击按钮以后,使box1向右移动(left值增大)
    btn21.onclick = function(){
        move(box21 , 800 , 10);
    };
    //点击按钮以后,使box1向左移动(left值减小)
    btn22.onclick = function(){
        move(box21 , 0 , 10);
    };
    //定义一个变量,用来保存定时器的标识
    var timer2;
    //尝试创建一个可以执行简单动画的函数
    /*
     * 参数:
     *  obj:要执行动画的对象
     *  target:执行动画的目标位置
     *  speed:移动的速度(正数向右移动,负数向左移动)
     */
    function move(obj , target ,speed){
        // 关闭上一个定时器
        clearinterval(timer2);
        // 获取元素目前的位置
        var current = parseint(getstyle(obj,"left"));
        //判断速度的正负值
        //如果从0 向 800移动,则speed为正
        //如果从800向0移动,则speed为负
        if(current > target){
            //此时速度应为负值
            speed = -speed;
        }
        //开启一个定时器,用来执行动画效果
        timer2 = setinterval(function(){
            //获取obj的原来的left值
            var oldvalue = parseint(getstyle(obj,"left"));
            //在旧值的基础上增加
            var newvalue = oldvalue + speed;
            //判断newvalue是否大于800
            //从800 向 0移动
            //向左移动时,需要判断newvalue是否小于target
            //向右移动时,需要判断newvalue是否大于target
            if((speed < 0 && newvalue < target) || (speed > 0 && newvalue > target)){
                newvalue = target;
            }
            obj.style.left = newvalue + "px";
            //当元素移动到0px时,使其停止执行动画
            if(newvalue == target){
                //达到目标,关闭定时器
                clearinterval(timer2);
            }
        },30);
    }
</script>

<pre>
133. 定时器的应用3
</pre>
<div class="" style="position: relative;height: 300px;">
    <div><button id="btn31">点击多次变化</button></div><br />
    <div id="box31" style="position: absolute;width: 100px;height: 100px;background-color: #5197ff;"></div>
</div>
<script type="text/javascript">
    console.log("第133");
    //尝试创建一个可以执行简单动画的函数
    /*
     * 参数:
     *  obj:要执行动画的对象
     *  attr:要执行动画的样式,比如:left top width height
     *  target:执行动画的目标位置
     *  speed:移动的速度(正数向右移动,负数向左移动)
     *  callback:回调函数,这个函数将会在动画执行完毕以后执行
     */
    function moveani(obj, attr, target, speed, callback) {
        //关闭上一个定时器
        clearinterval(obj.timer);
        //获取元素目前的位置
        var current = parseint(getstyle(obj, attr));
        //判断速度的正负值
        //如果从0 向 800移动,则speed为正
        //如果从800向0移动,则speed为负
        if(current > target) {
            //此时速度应为负值
            speed = -speed;
        }
        //开启一个定时器,用来执行动画效果
        //向执行动画的对象中添加一个timer属性,用来保存它自己的定时器的标识
        obj.timer = setinterval(function() {
            //获取box1的原来的left值
            var oldvalue = parseint(getstyle(obj, attr));
            //在旧值的基础上增加
            var newvalue = oldvalue + speed;
            //判断newvalue是否大于800
            //从800 向 0移动
            //向左移动时,需要判断newvalue是否小于target
            //向右移动时,需要判断newvalue是否大于target
            if((speed < 0 && newvalue < target) || (speed > 0 && newvalue > target)) {
                newvalue = target;
            }
            //将新值设置给box1
            obj.style[attr] = newvalue + "px";
            //当元素移动到0px时,使其停止执行动画
            if(newvalue == target) {
                //达到目标,关闭定时器
                clearinterval(obj.timer);
                //动画执行完毕,调用回调函数
                callback && callback();
            }
        }, 30);
    }
    
    var btn31 = document.getelementbyid("btn31")
    btn31.onclick = function(){
        moveani(box31,"width",200,10,function(){
            moveani(box31,"height",200,10,function(){
                moveani(box31,"left",50,10,function(){
            
                })
            })
        })
    }
</script>

<pre>
134. 完成轮播图界面
</pre>
<pre>
135. 完成点击按钮切换图片
</pre>
<pre>
136. 完成轮播图
</pre>
<style type="text/css">
*{
    margin: 0;
    padding: 0;
}
#outer{
    width: 520px;
    height: 333px;
    margin: 20px;
    background-color: greenyellow;
    padding: 10px 0;
    position: relative;
    overflow: hidden;
}
#imglist{
    list-style: none;
    position: absolute;
    left: 0px;
}
#imglist li{
    float: left;
    margin: 0 10px;
}
#navdiv{
    position: absolute;
    bottom: 15px;
}
#navdiv a{
    float: left;
    width: 15px;
    height: 15px;
    background-color: red;
    margin: 0 5px;
    opacity: 0.5;
    filter: alpha(opacity=50);
}
#navdiv a:hover{
    background-color: black;
}
</style>
<!-- 创建一个外部的div,来作为大的容器 -->
<div id="outer">
    <!-- 创建一个ul,用于放置图片 -->
    <ul id="imglist">
        <li><img src="images/1.jpg"/></li>
        <li><img src="images/2.jpg"/></li>
        <li><img src="images/3.jpg"/></li>
        <li><img src="images/4.jpg"/></li>
        <li><img src="images/5.jpg"/></li>
    </ul>
    <!--创建导航按钮-->
    <div id="navdiv">
        <a href="javascript:;"></a>
        <a href="javascript:;"></a>
        <a href="javascript:;"></a>
        <a href="javascript:;"></a>
        <a href="javascript:;"></a>
    </div>
</div>
<script type="text/javascript">
    console.log("第134,135,136");
    var imglist = document.getelementbyid("imglist");
    var imgarr = document.getelementsbytagname("img");
    imglist.style.width = 520*imgarr.length+"px";
    var navdiv = document.getelementbyid("navdiv");
    var outer = document.getelementbyid("outer");
    navdiv.style.left = (outer.offsetwidth - navdiv.offsetwidth)/2 + "px";
    var index = 0;
    var alla = document.getelementsbytagname("a");
    alla[index].style.backgroundcolor = "black";
    for(var i=0; i<alla.length ; i++){
        alla[i].num = i;
        alla[i].onclick = function(){
            index = this.num;
            seta();
            moveani(imglist , "left" , -520*index , 20 , function(){
                autochange();
            });
        };
    }
    //开启自动切换图片
    autochange();
    //创建一个方法用来设置选中的a
    function seta(){
        //判断当前索引是否是最后一张图片
        if(index >= imgarr.length - 1){
            //则将index设置为0
            index = 0;
            //此时显示的最后一张图片,而最后一张图片和第一张是一摸一样
            //通过css将最后一张切换成第一张
            imglist.style.left = 0;
        }
        for(var i=0 ; i<alla.length ; i++){
            alla[i].style.backgroundcolor = "";
        }
        alla[index].style.backgroundcolor = "black";
    };
    //定义一个自动切换的定时器的标识
    var timer4;
    //创建一个函数,用来开启自动切换图片
    function autochange(){
        //开启一个定时器,用来定时去切换图片
        timer4 = setinterval(function(){
            //使索引自增
            index++;
            //判断index的值
            index %= imgarr.length;
            //执行动画,切换图片
            moveani(imglist , "left" , -520*index , 20 , function(){
                //修改导航按钮
                seta();
            });
            
        },1500);
    }
    
</script>

<pre>
137. 类(class)的操作
</pre>
<style type="text/css">
.b1{
    width: 100px;
    height: 100px;
    background-color: red;
}
.b2{
    height: 300px;
    background-color: yellow;
}
</style>
<div class="">
    <button id="btn71">点击按钮以后修改box的样式</button>
    <br /><br />
    <div id="box71" class="b1"></div>
</div>
<script type="text/javascript">
    console.log("第137");
    var btn71 = document.getelementbyid("btn71")
    var box71 = document.getelementbyid("box71")
    btn71.onclick = function(){
        //addclass(box71,"b2")
        toggleclass(box71,"b2")
    }
    // 定义一个函数,用来向一个元素中添加指定的class属性值
    // 参数: obj 要添加class属性的元素,cn 要添加的class值
    function addclass(obj , cn){
        //检查obj中是否含有cn
        if(!hasclass(obj , cn)){
            obj.classname += " "+cn;
        }
    }
    // 判断一个元素中是否含有指定的class属性值
    function hasclass(obj , cn){
        //判断obj中有没有cn class
        //创建一个正则表达式
        //var reg = /\bb2\b/;
        var reg = new regexp("\\b"+cn+"\\b");
        return reg.test(obj.classname);
    }
    // 删除一个元素中的指定的class属性
    function removeclass(obj , cn){
        //创建一个正则表达式
        var reg = new regexp("\\b"+cn+"\\b");
        //删除class
        obj.classname = obj.classname.replace(reg , "");
    }
    // toggleclass可以用来切换一个类
    function toggleclass(obj , cn){
        //判断obj中是否含有cn
        if(hasclass(obj , cn)){
            //有,则删除
            removeclass(obj , cn);
        }else{
            //没有,则添加
            addclass(obj , cn);
        }
    }
    
</script>

<pre>
138. 二级菜单完成基本功能
</pre>
<pre>
139. 二级菜单过渡效果
</pre>
<style type="text/css">
div.sdmenu {
    width: 150px;
    margin: 20px;
    font-family: arial, sans-serif;
    font-size: 12px;
    padding-bottom: 10px;
    background: #eee;
    color: #fff;
}
div.sdmenu div {
    background: #bbb;
    overflow: hidden;
}
div.sdmenu div.collapsed {
    height: 25px;
}
div.sdmenu div span {
    display: block;
    position: relative;
    height: 15px;
    line-height: 15px;
    overflow: hidden;
    padding: 5px 25px;
    font-weight: bold;
    color: white;
    cursor: pointer;
    border-bottom: 1px solid #ddd;
}
div.sdmenu div span:before {
    content: '';
    position: absolute;
    top: 7px;
    left: 10px;
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 5px;
    border-color:#333 transparent  transparent transparent;
}
div.sdmenu div.collapsed span:before {
    border-color: transparent  transparent transparent #333;
}

div.sdmenu div a {
    padding: 5px 10px;
    background: #eee;
    display: block;
    border-bottom: 1px solid #ddd;
    color: #066;
}

div.sdmenu div a.current {
    background: #ccc;
}

div.sdmenu div a:hover {
    background: #066 ;
    color: #fff;
    text-decoration: none;
}
</style>
<div id="my_menu" class="sdmenu">
    <div>
        <span class="menuspan">在线工具</span>
        <a href="javascript:;">图像优化</a>
        <a href="javascript:;">收藏夹图标生成器</a>
        <a href="javascript:;">邮件</a>
        <a href="javascript:;">htaccess密码</a>
        <a href="javascript:;">梯度图像</a>
        <a href="javascript:;">按钮生成器</a>
    </div>
    <div class="collapsed">
        <span class="menuspan">支持我们</span>
        <a href="javascript:;">推荐我们</a>
        <a href="javascript:;">链接我们</a>
        <a href="javascript:;">网络资源</a>
    </div>
    <div class="collapsed">
        <span class="menuspan">合作伙伴</span>
        <a href="javascript:;">javascript工具包</a>
        <a href="javascript:;">css驱动</a>
        <a href="javascript:;">codingforums</a>
        <a href="javascript:;">css例子</a>
    </div>
    <div class="collapsed">
        <span class="menuspan">测试电流</span>
        <a href="javascript:;">current or not</a>
        <a href="javascript:;">current or not</a>
        <a href="javascript:;">current or not</a>
        <a href="javascript:;">current or not</a>
    </div>
</div>

<script type="text/javascript">
    console.log("第138,139");
    /*
     * 我们的每一个菜单都是一个div
     *  当div具有collapsed这个类时,div就是折叠的状态
     *  当div没有这个类是,div就是展开的状态
     */
    
    //获取所有的class为menuspan的元素
    var menuspan = document.queryselectorall(".menuspan");
    //定义一个变量,来保存当前打开的菜单
    var opendiv = menuspan[0].parentnode;
    //为span绑定单击响应函数
    for(var i=0 ; i<menuspan.length ; i++){
        menuspan[i].onclick = function(){
            //this代表我当前点击的span
            //获取当前span的父元素
            var parentdiv = this.parentnode;
            //切换菜单的显示状态
            togglemenu(parentdiv);
            //判断opendiv和parentdiv是否相同
            if(opendiv != parentdiv  && !hasclass(opendiv , "collapsed")){
                //切换菜单的显示状态
                togglemenu(opendiv);
            }
            //修改opendiv为当前打开的菜单
            opendiv = parentdiv;
        };
    }
    
    // 用来切换菜单折叠和显示状态
    function togglemenu(obj){
        //在切换类之前,获取元素的高度
        var begin = obj.offsetheight;
        //切换parentdiv的显示
        toggleclass(obj , "collapsed");
        //在切换类之后获取一个高度
        var end = obj.offsetheight;
        //console.log("begin = "+begin +" , end = "+end);
        //动画效果就是将高度从begin向end过渡
        //将元素的高度重置为begin
        obj.style.height = begin + "px";
        //执行动画,从bengin向end过渡
        moveani(obj,"height",end,10,function(){
            //动画执行完毕,内联样式已经没有存在的意义了,删除之
            obj.style.height = "";
        });
    }
    
</script>

<pre>
140. json
- js中的对象只有js自己认识,其他的语言都不认识
- json就是一个特殊格式的字符串,这个字符串可以被任意的语言所识别,
并且可以转换为任意语言中的对象,json在开发中主要用来数据的交互
- json
- javascript object notation js对象表示法
- json和js对象的格式一样,只不过json字符串中的属性名必须加双引号
其他的和js语法一致
json分类:
1.对象 {}
2.数组 []
json中允许的值:
1.字符串
2.数值
3.布尔值
4.null
5.对象
6.数组
</pre>
<script type="text/javascript">
    console.log("第140");
    var arr = '[1,2,3,"hello",true]';
    var obj2 = '{"arr":[1,2,3]}';
    var arr2 ='[{"name":"孙悟空","age":18,"gender":"男"},{"name":"孙悟空","age":18,"gender":"男"}]';
    /*
     * 将json字符串转换为js中的对象
     *  在js中,为我们提供了一个工具类,就叫json
     *  这个对象可以帮助我们将一个json转换为js对象,也可以将一个js对象转换为json
     */
    var json = '{"name":"孙悟空","age":18,"gender":"男"}';
    /*
     * json --> js对象
     *   json.parse()
     *      - 可以将以json字符串转换为js对象
     *      - 它需要一个json字符串作为参数,会将该字符串转换为js对象并返回
     */
    var o = json.parse(json);
    var o2 = json.parse(arr);
    console.log(o.gender);
    console.log(o2[1]);
    var obj3 = {name:"猪八戒" , age:28 , gender:"男"};
    /*
     * js对象 ---> json
     *  json.stringify()
     *      - 可以将一个js对象转换为json字符串
     *      - 需要一个js对象作为参数,会返回一个json字符串
     */
    var str = json.stringify(obj3);
    console.log(str);
    /*
     * json这个对象在ie7及以下的浏览器中不支持,所以在这些浏览器中调用时会报错
     */
    var str3 = '{"name":"孙悟空","age":18,"gender":"男"}';
    json.parse(str3);
    /*
     * eval()
     *  - 这个函数可以用来执行一段字符串形式的js代码,并将执行结果返回
     *  - 如果使用eval()执行的字符串中含有{},它会将{}当成是代码块
     *      如果不希望将其当成代码块解析,则需要在字符串前后各加一个()
     *  - eval()这个函数的功能很强大,可以直接执行一个字符串中的js代码,
     *      但是在开发中尽量不要使用,首先它的执行性能比较差,然后它还具有安全隐患
     */
    var str2 = "console.log('hello');";
    var obj = eval(str2);
</script>

</body>
</html>

所有基础课程链接:


 1.javascript基础视频教程总结(001-010章)           2.javascript基础视频教程总结(011-020章)          3. javascript基础视频教程总结(021-030章)        4. javascript基础视频教程总结(031-040章)

5. javascript基础视频教程总结(041-050章)           6. javascript基础视频教程总结(051-060章)         7. javascript基础视频教程总结(061-070章)        8. javascript基础视频教程总结(071-080章)

9. javascript基础视频教程总结(081-090章)          10. javascript基础视频教程总结(091-100章)        11. javascript基础视频教程总结(101-110章)      12. javascript基础视频教程总结(111-120章)

13. javascript基础视频教程总结(121-130章)        14. javascript基础视频教程总结(131-140章)


 另外,欢迎关注我的