JavaScript的12个小练习

1:返回顶部

设置了当前界面距离顶部大于20px时返回顶部按钮显示

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>返回顶部</title>
  <style>
    body{
        height: 3000px;
    }
    #back-to-top {
      position: fixed;
      bottom: 20px;
      right: 20px;
      background-color: #007bff;
      color: #fff;
      border: none;
      padding: 10px 20px;
      cursor: pointer;
      display: none;
    }
  </style>
</head>
<body>
  <button id="back-to-top">返回顶部</button>

  <script>
    var button = document.getElementById("back-to-top");

    window.addEventListener("scroll", function() {
      if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
        button.style.display = "block";
      } else {
        button.style.display = "none";
      }
    });

    button.addEventListener("click", function() {
      document.body.scrollTop = 0;
      document.documentElement.scrollTop = 0;
    });
  </script>
</body>
</html>

2:自动轮播

实现效果:

需要注意的点:光标在图片上时图片不轮播,切换图片时对应圆点变色

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .slideshow-container {
            position: relative;
            max-width: 800px;
            margin: auto;
            z-index: 1;
        }

        .slideshow-container .slide {
            display: none;
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 400px;
        }

        .slideshow-container .slide img {
            width: 100%;
            height: 100%;
        }

        .slideshow-container .slide .caption {
            position: absolute;
            bottom: 0;
            left: 0;
            width: 100%;
            padding: 10px;
        }

        .slideshow-container .slide .caption p {
            margin: 0;
        }

        .slideshow-container .dot {
            position: relative;
            top: 370px;
            left: 330px;
            display: inline-block;
            width: 15px;
            height: 15px;
            border-radius: 50%;
            background-color: #bbb;
            margin: 0 20px;
            cursor: pointer;
            z-index: 3;
        }

        .slideshow-container .dot.active {
            background-color: #000000;
        }

        .slideshow-container .arrow {
            position: absolute;
            top: 190px;
            width: 50px;
            height: 50px;
            background-color: rgba(3, 3, 3, 0.5);
            color: #fff;
            text-align: center;
            line-height: 55px;
        }

        .slideshow-container .arrow.left {
            left: 0px;
        }

        .slideshow-container .arrow.right {
            right: 0px;
        }
    </style>
</head>
<body>
    <div class="slideshow-container">
        <div class="slide">
            <img src="https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/5ff9903ddf81be177622a2bd8e65338a.jpg?thumb=1&w=1839&h=690&f=webp&q=90" alt="Image 1">
            <div class="caption">
                
            </div>
        </div>
        <div class="slide">
            <img src="https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/fb7a27a273816b4772fc29c67e6630ec.jpg?thumb=1&w=1839&h=690&f=webp&q=90" alt="Image 2">
            <div class="caption">
                
            </div>
        </div>
        <div class="slide">
            <img src="https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/3d0638902de12d2f25196af0ea17b1d3.jpg?thumb=1&w=1839&h=690&f=webp&q=90" alt="Image 3">
            <div class="caption">
                
            </div>
        </div>

        <div class="arrow left"><img src="图片/向左箭头.png" width="18px"></div>
        <div class="arrow right"><img src="图片/向右箭头.png" width="18px"></div>

        <div class="dots">
            <span class="dot"></span>
            <span class="dot"></span>
            <span class="dot"></span>
        </div>
    </div>
    <script>
        var slides = document.getElementsByClassName('slide');
        var dots = document.getElementsByClassName('dot');
        var currentIndex = 0;
        var autoSlideInterval;

        function showSlide(index) {
            for (var i = 0; i < slides.length; i++) {
                slides[i].style.display = 'none';
            }
            for (var i = 0; i < dots.length; i++) {
                dots[i].classList.remove('active');
            }

            slides[index].style.display = 'block';
            dots[index].classList.add('active');

            var caption = slides[index].querySelector('.caption');
            caption.style.bottom = '-' + caption.offsetHeight + 'px';
            caption.style.opacity = '0';
            caption.style.transition = 'bottom 0.5s, opacity 0.5s';
            setTimeout(function() {
                caption.style.bottom = '0';
                caption.style.opacity = '1';
            }, 100);
        }

        function nextSlide() {
            currentIndex++;
            if (currentIndex >= slides.length) {
                currentIndex = 0;
            }
            showSlide(currentIndex);
        }

        function previousSlide() {
            currentIndex--;
            if (currentIndex < 0) {
                currentIndex = slides.length - 1;
            }
            showSlide(currentIndex);
        }

        function startAutoSlide() {
            autoSlideInterval = setInterval(nextSlide, 3000);
        }

        function stopAutoSlide() {
            clearInterval(autoSlideInterval);
        }

        function setupEventListeners() {
            var slideshowContainer = document.querySelector('.slideshow-container');
            var arrows = slideshowContainer.querySelectorAll('.arrow');

            slideshowContainer.addEventListener('mouseover', function() {
                stopAutoSlide();
                for (var i = 0; i < arrows.length; i++) {
                    arrows[i].style.display = 'block';
                }
            });

            slideshowContainer.addEventListener('mouseout', function() {
                startAutoSlide();
                for (var i = 0; i < arrows.length; i++) {
                    arrows[i].style.display = 'none';
                }
            });

            for (var i = 0; i < dots.length; i++) {
                dots[i].addEventListener('click', function() {
                    var dotIndex = Array.prototype.indexOf.call(dots, this);
                    currentIndex = dotIndex;
                    showSlide(currentIndex);
                });
            }

            for (var i = 0; i < arrows.length; i++) {
                arrows[i].addEventListener('click', function() {
                    if (this.classList.contains('left')) {
                        previousSlide();
                    } else if (this.classList.contains('right')) {
                        nextSlide();
                    }
                });
            }
        }

        showSlide(currentIndex);
        startAutoSlide();
        setupEventListeners();
    </script>
</body>
</html>

3:瀑布流布局

该demo会将多个图片纵向紧密排列,可以根据界面的宽度自动改变列数

效果:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .container{
            position: relative;
        }
        .item{
            width: 320px;
            height: auto;
            position: absolute;
            padding-left: 50px;
        }

        .item img{
            width: 100%;
        }
        

    </style>
</head>
<body>
    <div class="container" id="con">
        <div class="item">
                <img src="图/小米图1.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图5.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图3.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图4.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图2.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图5.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图1.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图3.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图6.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图2.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图7.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图3.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图1.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图5.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图7.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图2.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图4.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图3.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图4.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图5.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图7.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图1.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图6.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图2.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图2.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图2.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图1.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图5.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图2.webp" alt="">
        </div>
        <div class="item">
                <img src="图/小米图6.webp" alt="">
        </div>
        <div class="item">
            <img src="图/小米图4.webp" alt="">
        </div>
        <div class="item">
            <img src="图/小米图2.webp" alt="">
        </div>
        <div class="item">
            <img src="图/小米图5.webp" alt="">
        </div>
        <div class="item">
            <img src="图/小米图1.webp" alt="">
        </div>
        <div class="item">
            <img src="图/小米图3.webp" alt="">
        </div>
        <div class="item">
            <img src="图/小米图6.webp" alt="">
        </div>
        <div class="item">
            <img src="图/小米图2.webp" alt="">
        </div>
        <div class="item">
            <img src="图/小米图2.webp" alt="">
        </div>
        <div class="item">
            <img src="图/小米图3.webp" alt="">
        </div>
        <div class="item">
            <img src="图/小米图1.webp" alt="">
        </div>
        <div class="item">
            <img src="图/小米图2.webp" alt="">
    </div>
    </div>
    <script>
        //当页面加载的时候调用
window.onload = function(){
	//页面初始化调用
    waterFall()
    //每次页面改变大小调用
    window.onresize = waterFall
}
function waterFall(){
   // 1. 设置container盒子的宽度
   //      注意:浏览器的可视区域的宽度 / 一个item元素的宽度 = 一行的排列的元素的个数
   let container = document.getElementById("con")
   let item = document.getElementsByClassName("item")
   //获取元素的宽度(含border,padding)
   let width = item[0].offsetWidth 
   //计算出浏览器窗口的宽度
   let clientWidth = document.documentElement.clientWidth;
   //计算出应该放几列(向下取整)
   let columnCount = Math.floor(clientWidth / width)
   //设置容器(父盒子)的宽度
   container.style.width = columnCount*width+"px"
    
   // 2.设置每一个item元素的排列位置
   //  第一行整体的top值都是0 后面的依次找上一行高度最小的容器,在它下面进行排列
   let hrr = []
   for(let i= 0 ;i<item.length;i++){
   		//定位第一行的图片
       if(i<columnCount){
           item[i].style.top = "0px"
           item[i].style.left = i* width+"px" 
           hrr.push(item[i].offsetHeight)
       }else{
           //第一行之后的
           //选择总高度最小的列
           let min = Math.min(...hrr)
           let index = hrr.indexOf(min)
           //将每个元素定位到当前总高度最小的列下
           item[i].style.top = min+"px"
           item[i].style.left = index * width+"px" 
           //当前定位的元素加入该列
           hrr[index] += item[i].offsetHeight
       }
   }
}
    </script>
</body>
</html>

4:时钟

需要注意上面的时间与北京时间同步,注意控制指针转动的角度

实现效果:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        ul{
            list-style: none;
        }
        /* 刻度时钟 */
        .time-clock{
            width: 300px;
            height: 300px;
            border: 5px solid yellowgreen;
            border-radius: 50%;
            margin: 50px;
            position: relative;
            left: 560px;
        }
        /* 表盘 */
        .time-clock ul{
            width: 100%;
            height: 100%;
            position: relative;
        }
        .time-clock ul li{
            width: 2px;
            height: 8px;
            background: yellowgreen;
            position: absolute;
            left: 50%;
            top:0;
            transform-origin:center 150px ;
        }
        /* .time-clock ul li:nth-child(2){
            transform: rotate(6deg);
            transform-origin:center 150px ;
        }
        .time-clock ul li:nth-child(3){
            transform: rotate(12deg);
            transform-origin:center 150px ;
        } */
        #hour {
            width: 6px;
            height: 50px;
            background: blue;
            position: absolute;
            left: 50%;
            top: 50%;
            margin:-50px 0 0 -3px;
            transform-origin:center bottom ;
        }
        #minu{
            width: 4px;
            height: 80px;
            background: blueviolet;
            position: absolute;
            left: 50%;
            top: 50%;
            margin:-80px 0 0 -2px;
            transform-origin:center bottom;
        }
        #second{
            width: 2px;
            height: 120px;
            background: red;
            position: absolute;
            left: 50%;
            top: 50%;
            margin:-120px 0 0 -1px;
            transform-origin:center bottom;
        }
    #ball{
        width: 20px;
        height: 20px;
        background: black;
        position: absolute;
        left: 50%;
        top:50%;
        border-radius: 50%;
        transform:translate(-50%,-50%);
    }
/* —————————————————————————————————————————————— */
    /* 电子时钟 */
    #main{
        width: 600px;
        height: 300px;
        line-height: 300px;
        margin: 50px 180px 0 500px;
        text-align: center;
        background-color: black;
        border-radius: 70px;
        box-shadow: -10px -10px 20px rgba(255,255,255,.5),
        10px 10px 20px rgba(70,70,70,.12);
    }
    #clock{
        font-size: 60px;
        color: white; 
        letter-spacing: 25px;
    }
    </style>
</head>




<body>
    <!-- 刻度时钟 -->
   <div class="time-clock">
    <ul>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
    </ul>
    <div id="hour"></div>
    <div id="minu"></div>
    <div id="second"></div>
    <div id="ball"></div>
</div>
    <!-- 电子时钟 -->
    <div id="main">
        <div id="clock">12:00:00</div>
    </div>
<!-- —————————————————————————————————— -->

    <script>
        //刻度时钟
        var ul =document.querySelector(`ul`);
        var hour =document.querySelector(`#hour`);
        var minu =document.querySelector(`#minu`);
        var second =document.querySelector(`#second`);
        //这里别忘加#,因为是id


        for(var i=0;i<60;i++){
            var li = document.createElement(`li`);
            li.style.transform = `rotate(`+i*6+`deg)`;
            if(i%5==0){
                li.style.height=`18px`
            }
            ul.appendChild(li);
        }
        //定时器
        function run(){
            var date = new Date();
            var iH = date.getHours();
            var iM = date.getMinutes();
            var iS = date.getSeconds();

            hour.style.transform = `rotate(`+(iH*30+iM/2)+`deg)`
            minu.style.transform = `rotate(`+iM*6+`deg)`
            second.style.transform = `rotate(`+iS*6+`deg)` 
        }
        run();

        setInterval(run,1000);



        //————————————————————————————————————
        //电子时钟
        let oClock=document.querySelector(`#clock`);
        let addZero = (num) =>{
            if(num>=10){
                return num;
            }else{
                return `0${num}`;
            }
        }
        let updateTime=()=>{
            let now = new Date();
            let time = addZero(now.getHours())+":"+
            addZero(now.getMinutes())+":"+
            addZero(now.getSeconds());
            oClock.innerText = time;
        }
        updateTime();
        setInterval(updateTime,1000);
    </script>

  
</body>
</html>

5:选项卡

自动轮播的精简版

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
    .tab {
        margin-left: 500px;
        width: 600px;
        overflow: hidden;
        border: 1px solid #ccc;
        background-color: #f1f1f1;
    }

    .tab button {
    background-color: inherit;
    float: left;
    border: none;
    outline: none;
    cursor: pointer;
    padding: 14px 16px;
    transition: 0.3s;
    }

    .tab button:hover {
    background-color: #ddd;
    }

    .tab button.active {
        background-color: #ccc;
    }

    .tabcontent {
        margin-left: 500px;
        width: 580px;
        display: none;
        padding: 6px 12px;
        border: 1px solid #ccc;
        border-top: none;
    }
    </style>
</head>
<body>
    <div class="tab-container">
        <div class="tab">
          <button class="tablinks" onclick="openGame(event, 'lol')">英雄联盟</button>
          <button class="tablinks" onclick="openGame(event, 'dota')">DOTA</button>
          <button class="tablinks" onclick="openGame(event, 'feng')">风暴英雄</button>
          <button class="tablinks" onclick="openGame(event, '300hero')">300英雄</button>
        </div>
        <div id="lol" class="tabcontent">
          <h3>英雄联盟</h3>
          <p>英雄联盟是一款竞技游戏,由Riot Games开发。游戏中玩家控制一个称为“英雄”的角色,与队友合作对抗敌人。</p>
        </div>
        <div id="dota" class="tabcontent">
          <h3>DOTA</h3>
          <p>DOTA是一款MOBA游戏,由Valve开发。玩家控制一个英雄,与队友合作对抗敌人并摧毁对方的主基地。</p>
        </div>
        <div id="feng" class="tabcontent">
          <h3>风暴英雄</h3>
          <p>风暴英雄是一款MOBA游戏,由Valve开发。玩家控制一个英雄,与队友合作对抗敌人并摧毁对方的主基地。</p>
        </div>
        <div id="300hero" class="tabcontent">
          <h3>300英雄</h3>
          <p>300英雄是一款MOBA游戏,以动漫角色为主题。玩家可以选择不同的动漫角色进行战斗。</p>
        </div>
    </div>
    
    <script>
        document.getElementsByClassName("tabcontent")[0].style.display = "block";
    
        function openGame(evt, gameName) {
          var i, tabcontent, tablinks;
          tabcontent = document.getElementsByClassName("tabcontent");
          for (i = 0; i < tabcontent.length; i++) {
            tabcontent[i].style.display = "none";
          }
          document.getElementById(gameName).style.display = "block";
        }
    </script>
</body>
</html>

6:发送验证码

本demo需要注意验证码的倒计时结束会重置按钮

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        body{
            margin-top: 300px;
        }
        .container {
            display: flex;
            flex-direction: column;
            align-items: center;
            margin-top: 50px;
            }

        input[type="text"] {
            width: 200px;
            height: 30px;
            margin-bottom: 10px;
        }

        button {
            width: 150px;
            height: 30px;
        }
    </style>
</head>
<body>
    <div class="container">
        <input type="text" id="ver" placeholder="请输入验证码">
        <button id="send" onclick="sendVer()">发送验证码</button>
        <button id="submit" onclick="submitForm()" disabled>提交</button>
      </div>
      
    <script>
        var send = document.getElementById('send')
        var submit = document.getElementById('submit')
        var verInput = document.getElementById('ver')
        function sendVer() {
            
            send.disabled = true;
            send.innerText = '60秒后重试'
            alert('验证码是0505')

            var count = 60;
            var countdown = setInterval(function() {
                count--
                send.innerText = count + '秒后重试'

                if (count <= 0) {
                    clearInterval(countdown)
                    send.disabled = false
                    send.innerText = '发送验证码'
                }
            }, 1000)
            submit.disabled = false
        }
        
        function submitForm() {
            var ver = verInput.value
            if (ver === '0505') {
                alert('验证码验证成功!')
            }
            else {
                alert('验证码验证失败,请重新输入!')
            }
        }
    </script>
</body>
</html>

7:放大镜效果

需要注意要求放大的倍数,被放大部分的位置,光标应处在放大指示框的正中间,实际放大内容应与指示框内的内容一致

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>放大镜效果</title>
  <style>
    .container {
      position: relative;
      width: 500px;
    }
    .image {
      width: 100%;
      display: block;
    }

    .magnifier {
      position: absolute;
      width: 150px;
      height: 150px;
      border: 2px solid yellow;
      display: none;
      pointer-events: none;
    }

    .magnified {
      position: absolute;
      left: 510px;
      top: 0;
      width: 360px;
      height: 360px;
      border: 2px solid yellow;
      background-size: 330%;
      background-repeat: no-repeat;
      display: none;
      pointer-events: none;
    }
  </style>
</head>
<body>
  <div class="container">
    <img class="image" src="图/小米图2.webp" alt="Image">
    <div class="magnifier"></div>
    <div class="magnified"></div>
  </div>

  <script>
    var container = document.querySelector(".container");
    var magnifier = document.querySelector(".magnifier");
    var magnified = document.querySelector(".magnified");
    var image = document.querySelector(".image");

    container.addEventListener("mousemove", function(e) {
      var x = e.clientX - container.offsetLeft;
      var y = e.clientY - container.offsetTop;
      var mx = x - 75; // 150px / 2
      var my = y - 75; // 150px / 2

      magnifier.style.left = mx + "px";
      magnifier.style.top = my + "px";
      magnifier.style.display = "block";

      var bgX = -mx * 2.4 ; // 150px / 2
      var bgY = -my * 2.4; // 150px / 2

      magnified.style.backgroundImage = "url('" + image.src + "')";
      magnified.style.backgroundPosition = bgX + "px " + bgY + "px";
      magnified.style.display = "block";
    });

    container.addEventListener("mouseleave", function() {
      magnifier.style.display = "none";
      magnified.style.display = "none";
    });
  </script>
</body>
</html>

8:随机点名


9:省市区三级联动

区县太多了,就没来得及做。。。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>省市区三级联动</title>
  <style>
    select {
      padding: 10px;
      font-size: 16px;
      margin: 10px;
    }
  </style>
</head>
<body>
  <select id="province" onchange="updateCities()">
    <option value="">请选择省份</option>
    <option value="北京">北京</option>
    <option value="上海">上海</option>
    <option value="广东">广东</option>
    <!-- 其他省份 -->
  </select>
  <select id="city" onchange="updateDistricts()">
    <option value="">请选择城市</option>
  </select>
  <select id="district">
    <option value="">请选择区/县</option>
  </select>

  <script>
    var cityData = {
      "北京": ["东城区", "西城区", "朝阳区", "海淀区", "丰台区"],
      "上海": ["黄浦区", "徐汇区", "长宁区", "静安区", "普陀区"],
      "广东": ["广州市", "深圳市", "珠海市", "汕头市", "佛山市"]
      // 其他省市数据
    };

    function updateCities() {
      var province = document.getElementById("province").value;
      var citySelect = document.getElementById("city");
      citySelect.innerHTML = "<option value=''>请选择城市</option>";
      if (province in cityData) {
        cityData[province].forEach(function(city) {
          var option = document.createElement("option");
          option.value = city;
          option.textContent = city;
          citySelect.appendChild(option);
        });
      }
    }

    function updateDistricts() {
      var city = document.getElementById("city").value;
      var districtSelect = document.getElementById("district");
      districtSelect.innerHTML = "<option value=''>请选择区/县</option>";
      // 根据城市选择区/县数据,这里可以根据实际情况添加更多数据
    }
  </script>
</body>
</html>

10:班级表格

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>学生信息表</title>
  <style>
    table {
      border-collapse: collapse;
      width: 80%;
      margin: 20px auto;
    }
    th, td {
      border: 1px solid #000;
      padding: 8px;
      text-align: center;
    }
    th {
      background-color: #f2f2f2;
    }
    tr:nth-child(odd) {
      color: black;
      background-color: white;
    }
    tr:nth-child(even) {
      color: white;
      background-color: black;
    }
    button {
      padding: 5px 10px;
      background-color: red;
      color: white;
      border: none;
      cursor: pointer;
    }
  </style>
</head>
<body>
  <table id="student-table">
    <tr>
      <th>学号</th>
      <th>姓名</th>
      <th>性别</th>
      <th>二级学院</th>
      <th>班级</th>
      <th>专业</th>
      <th>辅导员</th>
      <th>操作</th>
    </tr>
    <tr>
      <td>1</td>
      <td>张三</td>
      <td>男</td>
      <td>计算机学院</td>
      <td>1901班</td>
      <td>计算机科学与技术</td>
      <td>李老师</td>
      <td><button onclick="deleteRow(this)">删除</button></td>
    </tr>
    <!-- 其他学生信息行 -->
  </table>
  <button onclick="showAddForm()">添加学生信息</button>

  <script>
    function deleteRow(button) {
      var row = button.parentNode.parentNode;
      if (confirm("确认删除该学生信息吗?")) {
        row.parentNode.removeChild(row);
        updateRowColors();
      }
    }

    function updateRowColors() {
      var table = document.getElementById("student-table");
      var rows = table.getElementsByTagName("tr");
      for (var i = 0; i < rows.length; i++) {
        if (i % 2 === 0) {
          rows[i].style.color = "white";
          rows[i].style.backgroundColor = "black";
        } else {
          rows[i].style.color = "black";
          rows[i].style.backgroundColor = "white";
        }
      }
    }

    function showAddForm() {
      var form = prompt("请输入新学生的信息(学号,姓名,性别,二级学院,班级,专业,辅导员)");
      if (form) {
        var newStudent = form.split(",");
        var table = document.getElementById("student-table");
        var newRow = table.insertRow(-1);
        for (var i = 0; i < newStudent.length; i++) {
          var cell = newRow.insertCell(i);
          cell.innerHTML = newStudent[i];
        }
        var deleteCell = newRow.insertCell(newStudent.length);
        deleteCell.innerHTML = '<button onclick="deleteRow(this)">删除</button>';
        updateRowColors();
      }
    }
  </script>
</body>
</html>

11和12:上周电脑崩了,重装了个系统,敲的代码全没了(/(ㄒoㄒ)/~~),还有两个有空会补上的

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值