Blogger Information
Blog 32
fans 0
comment 0
visits 22572
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
1. 如果将html元素集合转换为数组对象? 2. 定时器的种类与使用场景,举例说明 3. 事件模拟器的应用场景与案例(以点击广告为例) 4. 写出轮播图的基本实现原理与步骤,不少于200字 5. 自己动写写出一个轮播图,可参照课堂源码,但应有所创新
Yx的博客
Original
1147 people have browsed it

实例

1. 如果将html元素集合转换为数组对象? 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>将元素集合转为数组对象</title>
</head>
<body>
<ul>
    <li>text1</li>
    <li>text2</li>
    <li>text3</li>
    <li>text4</li>
</ul>
<script>
    var lis =document.getElementsByTagName("li");
    var arr1 =Array.prototype.slice.call(lis,0);
    console.log(arr1)
</script>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

2. 定时器的种类与使用场景,举例说明

javascript中有两种定时器:



(1)定时器setTimeOut()与clearTimeOut()


   setTimeOut()使用方法:< …… onClick="timerID=setTimeout('display ()',3000)">


   1.设置定时器的名称为timeID以便以后终止定时器时用到clearTimeOut(timeID)。


   2.display()方法要使用单引号。


   3.点击事件发生3秒之后执行display()方法一次。


(2)定时器setInterval()与clearInterval()


    setInterval()使用方法:<……onClick="timerID=setInterval ('display ()',3000)">


   1.设置定时器的名称为timeID以便以后终止定时器时用到clearInterval(timeID)。


   2.display()方法要使用单引号。


   3.点击事件发生3秒之后重复的执行display()方法。直到关闭窗口或者调用clearInterval()


3. 事件模拟器的应用场景与案例(以点击广告为例)

实例
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>点击广告案例</title>
</head>
<body>
<div style="width: 300px;height: 200px;background-color: lightgreen">广告案例</div>
<p id="res"></p>

<script>
    var div = document.getElementsByTagName('div').item(0);
    var res = document.getElementById('res');
    var num = 0;
    var price = 0.5;

    var click = new Event('click');
    setInterval(function () {
        div.dispatchEvent(click);
        num += 1;
        console.log(num);
        res.innerHTML = '点击收入: '+ '<span style="color:lightcoral">'+(num * price).toString()+'</span>' + '元';
    }, 2000);
    
</script>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

4. 写出轮播图的基本实现原理与步骤,不少于200字:


轮播图的原理
1.图片移动实现原理:
利用浮动将所有所有照片依次排成一行,给这一长串图片添加一个父级的遮罩,每次只显示一张图,其余的都隐藏起来。对图片添加绝对定位,通过控制left属性,实现照片的移动。

2.图片移动动画原理:
从a位置移动到b位置,需要先计算两点之间的差值,通过差值和时间间隔,计算出每次移动的步长,通过添加定时器,每次移动相同的步长,实现动画效果。

3.图片定位停止原理:
每一张照片都有相同的宽度,每张照片都有一个绝对的定位数值,通过检测定每次移动后,照片当前位置和需要到达位置之间的距离是否小于步长,如果小于,说明已经移动到位,可以将定时器清除,来停止动画。

4图片切换原理:
在全局设置一个变量,记录当前图片的位置,每次切换或跳转时,只需要将数值修改,并调用图片页数转像素位置函数,再调用像素运动函数即可。

5.自动轮播原理:
设置定时器,一定时间间隔后,将照片标记加1,然后开始切换。

6.左右点击切换原理:
修改当前位置标记,开始切换。这里需要注意与自动轮播之间的冲突。当点击事件触发之后,停止自动轮播计时器,开始切换。当动画结束后再次添加自动轮播计时器。


5.  轮播图实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>轮播图实例</title>
    <style>
        ul,li {
            margin: 0;
            padding: 0;
            list-style: none;
        }
        .box {
            /*定位父级*/
            position: relative;
            width: 1000px;
            height: 350px;
            margin: 0 auto;
        }

        .box .slider {
            width: 1000px;
            height: 350px;
            display: none;
        }

        .box .slider.active{
            display: block;
        }

        .box .point-list {
            position: absolute;
            /*绝对定位的环境下的水平居中方式*/
            left: 50%;
            margin-left: -38px;
            top: 310px;
        }



        .box .point-list .point {
            display: inline-block;
            width: 12px;
            height: 12px;
            margin: 0 5px;
            background-color: white;
            border-radius: 100%;
        }

        .box .point-list .point.active {
            background-color: black;
        }

        .box .point-list .point:hover {
            cursor: pointer;
        }


        .skip {
            position: absolute;
            top: 140px;
            display: inline-block;
            width: 40px;
            height: 80px;
            text-align: center;
            line-height: 80px;
            background-color: lightgray;
            color: white;
            opacity: 0.2;
            font-size: 36px;
        }
        .box .prev{
            left: 0;
        }

        .box .next{
            right: 0;
        }

        .box .skip:hover {
            cursor: pointer;
            opacity: 0.5;
            color: black;
        }
    </style>
</head>
<body>
<div class="box">
    <img src="https://img1.360buyimg.com/da/s590x470_jfs/t1/79425/15/4421/98558/5d283017E29d9a8fb/723bfa83c3f73613.jpg!q90!cc_590x470.webp" alt="" data-index="1" class="slider active">
    <img src="https://img1.360buyimg.com/pop/s590x470_jfs/t1/45206/26/5099/84405/5d2c41f8E490ac899/c03df426cd52bfe9.jpg!q90!cc_590x470.webp" alt="" data-index="2" class="slider">
    <img src="https://imgcps.jd.com/ling/7307139/6LaF5biC54m56Imy57K-6YCJ/54iG5ZOB5L2O6IezOS455YWD/t-5bd95d4f8e34e21f3ff67e71/15a71c63.jpg" alt="" data-index="3" class="slider">

    <div class="point-list">

    </div>

    <span class="skip prev"><</span>
    <span class="skip next">></span>

</div>

<script>
    var imgs = document.images;
    var imgArr = Array.prototype.slice.call(imgs, 0);
    var pointList = document.getElementsByClassName('point-list').item(0);

    imgArr.forEach(function (img, index){
        var span = document.createElement('span');

        if (index === 0) {
            span.classList.add('point','active')
        }
        span.classList.add('point');

        span.dataset.index = img.dataset.index;
        pointList.appendChild(span);
    });

    var points = document.getElementsByClassName('point');
    var pointArr = Array.prototype.slice.call(points, 0);


    pointArr.forEach(function (point){
        point.addEventListener('click', setImgActive, false);
    });

    function setImgActive(evt) {
        imgArr.forEach(function (img){
            if (img.dataset.index === evt.target.dataset.index) {
                imgArr.forEach(function (img) { img.classList.remove('active') });
                img.classList.add('active');
                setPointActive(img.dataset.index);
            }
        });
    }

    var skip = document.getElementsByClassName('skip');
    skip.item(0).addEventListener('click', skipImg, false);
    skip.item(1).addEventListener('click', skipImg, false);

    function skipImg(evt) {

        var currentImg = null;
        imgArr.forEach(function (img) {
            if (img.classList.contains('active')) {
                currentImg = img;
            }
        });

        if (evt.target.classList.contains('prev')) {
            currentImg.classList.remove('active');
            currentImg = currentImg.previousElementSibling;

            if (currentImg !== null && currentImg.nodeName === 'IMG') {
                currentImg.classList.add('active');
            } else {
                currentImg = imgArr[imgArr.length-1];
                currentImg.classList.add('active');
            }
        }

        if (evt.target.classList.contains('next')) {
            currentImg.classList.remove('active');
            currentImg = currentImg.nextElementSibling;

            if (currentImg !== null && currentImg.nodeName === 'IMG') {
                currentImg.classList.add('active');
            } else {
                currentImg = imgArr[0];
                currentImg.classList.add('active');
            }
        }
        var imgIndex = currentImg.dataset.index;
        setPointActive(imgIndex);

    }

    function setPointActive(imgIndex) {
        pointArr.forEach(function (point) { point.classList.remove('active') });
        pointArr.forEach(function (point) {
            if (point.dataset.index === imgIndex)
                point.classList.add('active');
        });
    }


    var box = document.getElementsByClassName('box').item(0);
    var timer = null;
    box.addEventListener('mouseout', startTimer, false);
    box.addEventListener('mouseover',clearTimer, false);
    function startTimer() {

        var clickEvent = new Event('click');
        timer = setInterval(function () {
            skip.item(1).dispatchEvent(clickEvent);
        }, 2000);
    }
    function clearTimer() {
        clearInterval(timer);
    }
</script>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例


Correction status:unqualified

Teacher's comments:请写完再提交
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post