当前位置: 首页 > article >正文

JS小模块练习

使用JS实现建简易计算器:

效果:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>YMY</title>
    <script>
        function count() {
            var num1 = document.getElementById("txt1").value;
            var num2 = document.getElementById("txt2").value;

            var fuhao = document.getElementById("select").value;
            switch (fuhao) {
                case '+': res = Number(num1) + Number(num2); break;
                case '-': res = num1 - num2; break;
                case '*': res = num1 * num2; break;
                case '/': res = num1 / num2; break;
            }
            document.getElementById("result").value = res;
        }
    </script>
</head>

<body>
    <input type='text' id='txt1' />
    <select id='select'>
        <option value='+'>+</option>
        <option value="-">-</option>
        <option value="*">*</option>
        <option value="/">/</option>
    </select>
    <input type='text' id='txt2' />
    <input type='button' value=' = ' onclick="count()" />
    <input type='text' id='result' value="" />

</body>

</html>

通过getElementById获取id为con的h2标签,并且实现修改标签样式。

<!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>
        p {
            background-color: pink;
        }
    </style>
</head>

<body>
    <p id="con">hdo</p>
    <script>
        var mess = document.getElementById("con");
        mess.style.backgroundColor = 'purple';
        mess.style.display = 'none';
    </script>
</body>

</html>

请编写"改变颜色"、"改变宽高"、"隐藏内容"、"显示内容"、"取消设置"的函数,点击相应按钮执行相应操作,点击"取消设置"按钮后,提示是否取消设置,如是执行操作,否则不做操作。

<!DOCTYPE HTML>
<html>

<head>
    <meta http-equiv="Content-Type" Content="text/html; charset=utf-8" />
    <title>javascript</title>
    <style type="text/css">
        .quxiao-class {
            width: 100px;
            height: 100px;
            color: black;
            background-color: gray;
        }
    </style>
</head>

<body>
    <h2 id="con" class="quxiao-class">yan</h2>
    <form>
        <!--当点击相应按钮,执行相应操作,为按钮添加相应事件-->
        <input type="button" value="改变颜色" onclick="colormodify()">
        <input type="button" value="改变宽高" onclick="widthmodify()">
        <input type="button" value="隐藏内容" onclick="textyincang()">
        <input type="button" value="显示内容" onclick="textxianshi()">
        <input type="button" value="取消设置" onclick="quxiao()">
    </form>
    <script type="text/javascript">
        //定义"改变颜色"的函数
        var mess = document.getElementById("con");
        function colormodify() {
            mess.style.color = 'pink';
        }
        function widthmodify() {
            mess.style.width = '400px';
            mess.style.height = '400px';
        }
        function textyincang() {
            mess.style.display = 'none';
        }
        function textxianshi() {
            mess.style.display = 'block';
        }
        function quxiao() {
            mess.className = "quxiao-class";
        }

        //定义"改变宽高"的函数


        //定义"隐藏内容"的函数


        //定义"显示内容"的函数


        //定义"取消设置"的函数



    </script>
</body>

</html>

设置一个广告(用图片代替),5秒后广告消失(函数:setTimeout)

<!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>
        .guang {
            width: 100px;
            height: 100px;
            /* background-color: pink; */
        }
    </style>
</head>

<body>
    <script>
        function xiaoshi() {
            var i = document.getElementById("con");
            i.style.display = 'none';
        }
        setTimeout(xiaoshi, 2000);
    </script>
    <div id="con" class="guang">
        <img src="images/luomeilan.jpg" alt="">
    </div>
</body>

</html>

点击百度按钮,跳转到百度界面

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <button id="butt">百度</button>
    <script>
        var hh = document.getElementById("butt");
        hh.addEventListener('click', function () {
            window.location.href = 'https://www.baidu.com';
        })
    </script>
</body>

</html>

封装自己的数学对象:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //利用对象封装自己的数学对象 含有PI、最大值、最小值
        var mymath = {
            PI: 3.1415926,
            max: function () {
                var max = arguments[0];
                for (var i = 1; i < arguments.length; i++) {
                    if (arguments[i] > max) {
                        max = arguments[i];
                    }
                }
                return max;
            },
            min: function () {
                var min = arguments[0];
                for (var i = 0; i < arguments.length; i++) {
                    if (min > arguments[i]); {
                        min = arguments[i];
                    }
                }
                return min;
            }
        }
        console.log(mymath.max(1, 5, 5, 8, 19, 3));
        console.log(mymath.max(8, 8, 5, 3, 18));
        console.log(mymath.PI);
    </script>
</body>

</html>

随机数,得到任意两个整数之间的随机数,实现点名

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // console.log(Math.max(1, 5, 5, 8, 19, 3));
        // console.log(Math.max(8, 8, 5, 3, 18));
        // 随机取1-10之间的整数
        console.log(Math.ceil(10 * Math.random()));
        // 得到两个数之间的随机整数,并包含这两个数
        function getRandom(min, max) {
            return Math.floor(Math.random() * (max - min + 1)) + min;
        }
        console.log(getRandom(8, 12));
        // 随机点名
        var arr = ['A', 'B', 'C', 'D', 'E'];
        console.log(arr[getRandom(0, arr.length - 1)]);
    </script>
</body>

</html>

冒泡排序

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>yan</title>
</head>

<body>
    <script>
        // 1.编写函数,实现数组内所有数字求和
        function sumArray(array) {
            var result = 0;
            for (var i = 0; i < array.length; i++) {
                result = result + array[i];
            }
            if (result < 0 || result > 10000) {
                return 0;
            }
            return result;
        };
        //输出结果
        console.log(sumArray([-19, 30]));
        console.log(sumArray([12, 1, 6, -33]));
        console.log(sumArray([19, 8, 100, 200]));
        console.log(sumArray([90, 10, 80, 20, 10000]));

        //2.实现数组升序排序,且返回数组不超过100个元素(冒泡排序)
        function sortArray(array) {
            if (array.length > 100) {
                var str = '请输入一个不超过100个元素的数组';
                return str;
            }
            for (var i = 0; i < array.length - 1; i++) {
                for (var j = 0; j < array.length - i - 1; j++) {
                    if (array[j] > array[j + 1]) {
                        var temp = array[j + 1];
                        array[j + 1] = array[j];
                        array[j] = temp;
                    }
                }
            }
            return array;
        };
        //输出结果
        console.log(sortArray([1, 23, 12, 5]));
        console.log(sortArray([89, 8, 92, 2, 5]));
        console.log(sortArray([13, 24, 6, 19, 2, 6]));
        console.log(sortArray(new Array(101).fill(1)));

    </script>

</body>

</html>

输出今天的日期,形式为:今天是2024年的11月5日,星期一  ,22时53分钟10秒  

返回 09:02:12;时间戳

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 今天是2024年的11月5日,星期一  ,22时53分钟10秒     
        var today = new Date();
        var year = today.getFullYear();
        var month = today.getMonth() + 1;
        var dates = today.getDate();
        var day = today.getDay();
        var arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
        var hour = today.getHours();
        var minute = today.getMinutes();
        var second = today.getSeconds();
        console.log('今天是' + year + '年的' + month + '月' + dates + '日,' + arr[day] + ',' + hour + '时' + minute + '分' + second + '秒');
        //封装函数,返回当前的时分秒,格式为 09:02:12
        function getTimer() {
            var time = new Date();
            var h = time.getHours();
            h = h < 10 ? '0' + h : h;
            var m = time.getMinutes();
            m = m < 10 ? '0' + m : m;
            var s = time.getSeconds();
            s = s < 10 ? '0' + s : s;
            return h + ':' + m + ':' + s
        }
        console.log(getTimer());

        //时间戳:距离1970.1.1的总毫秒数
        console.log(Date.now());

        // 在当前时间的基础上,推迟两个小时,并显示
        var today = new Date();
        document.write("现在时间:" + today + "<br>");
        // document.write(today.getTime() + '<br>');//当前时间的毫秒数
        today.setTime(today.getTime() + 2 * 60 * 60 * 1000);
        document.write("推迟两个小时:" + today);

        //    倒计时
        function countDown(time) {
            var nowTime = +new Date();//当前时间的时间戳
            var inputTime = +new Date(time);//活动时间的时间戳
            var times = (inputTime - nowTime) / 1000;  //剩余时间的秒数
            var d = parseInt(times / 60 / 60 / 24);//天
            d = d < 10 ? '0' + d : d;
            var h = parseInt(times / 60 / 60 % 24);//时
            h = h < 10 ? '0' + h : h;
            var m = parseInt(times / 60 % 60);//分
            m = m < 10 ? '0' + m : m;
            var s = parseInt(times % 60);//秒
            s = s < 10 ? '0' + s : s;
            return d + '天' + h + '时' + m + '分' + s + '秒';
        }
        console.log(countDown("2024-11-27 10:00:00"));//输入活动的时间
    </script>
</body>

</html>

创建数组:

<script type="text/javascript">
        // 创建数组
        var arr1 = new Array();//空数组
        var arr2 = new Array(5);//元素个数为5的空数组
        var arr3 = new Array('y', 'p');
        var arr4 = ['y', 'p'];
        console.log(arr1);
        console.log(arr2);
        console.log(arr3);
        console.log(arr4);
    </script>

根据系统的时间设置不同的问候语和图片

<!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>
        div {
            margin-top: 20px;
            width: 200px;
            height: 150px;
            background-color: pink;
            text-align: center;
            line-height: 150px;
        }

        img {
            margin-top: 20px;
            width: 300px;
            height: 180px;
        }
    </style>
</head>

<body>
    <!-- 根据系统的时间设置不同的问候语和图片 -->
    <div>
    </div>
    <img src="images/flower.jpg" alt="">
    <script type="text/javascript">
        var div = document.querySelector('div');
        var img = document.querySelector('img');
        var now = new Date();
        var h = now.getHours();
        console.log(h);
        if (h < 12) {
            div.innerText = '上午好!';
            img.src = 'images/luomeilan.jpg';
        }
        else if (h < 18) {
            div.innerText = '下午好!';
            img.src = 'images/flower.jpg';
        }
        else {
            div.innerText = '晚上好!';
            img.src = 'images/flower.jpg';
        }
    </script>
</body>

</html>

字符串:string.split函数练习:要求页面显示:XXXX年XX月X日 星期X--班级总分为:×。所给数据:"小明:87; 小花:81; 小红:97; 小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76"。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div></div>
    <script>
        // 字符串string.split;数组array.map
        var str = "小明:87; 小花:81; 小红:97; 小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76"; //要写字符串,不是数组,数组不能使用split
        var scor = str.split(';').map(itm => {  //str.split(';')返回的是一个数组,所以能用map
            var cc = itm.split(':');//str.split(';')是一个数组,里面的元素是字符串,所以能用split
            return parseInt(cc[1]);
        })
        var sum = 0;
        for (var i = 0; i < scor.length; i++) {
            sum = sum + scor[i];
        }
        function gettoday() {
            var today = new Date();
            var y = today.getFullYear();
            var m = today.getMonth();
            var d = today.getDate();
            var x = today.getDay();
            var weekday = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
            return y + '年' + m + '月' + d + '日' + ' 星期' + x;
        }
        var div = document.querySelector('div');
        div.innerHTML = gettoday() + '<br>' + '总分为:' + sum;
    </script>

</body>

</html>

背景为黑色,特效是绿色的雨滴,实现效果:实现代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Rain Effect</title>
    <style>
        body {
            margin: 0;
            padding: 0;
            background-color: black;
        }

        .rain-drop {
            position: absolute;
            width: 3px;
            height: 8px;
            background-color: green;
            animation: rainFall 1s linear infinite;
        }

        @keyframes rainFall {
            0% {
                transform: translateY(-10px);
            }

            100% {
                transform: translateY(1000px);
            }
        }
    </style>
</head>

<body>

</body>
<script>
    function createRain() {
        const rain = document.createElement('div');
        rain.classList.add('rain-drop');
        rain.style.left = Math.random() * window.innerWidth + 'px';
        rain.style.animationDuration = Math.random() * 2 + 1 + 's';
        document.body.appendChild(rain);
        setTimeout(() => {
            rain.remove();
        }, 2000);
    }

    setInterval(createRain, 50);
</script>

</html>

createElement

        //创建新元素
        var body = document.body;
        var input = document.createElement("input");
        input.type = "button";
        input.value = "按钮";
        input.className = 'jj';
        body.appendChild(input); 

className

<!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>
        .one {
            color: black;
            width: 100px;
            height: 100px;
            background-color: pink;
        }

        .two {
            width: 200px;
            height: 200px;
            background-color: gray;
        }
    </style>
</head>

<body>
    <div id='gg' class="one">
        hhh
    </div>
    <script>
        var div = document.getElementById('gg');
        div.style.color = 'purple';  //修改单个样式
        div.onclick = function () {//修改多个样式
            div.className = 'two';
        }
    </script>
</body>

</html>

getElementById、innerText、innerHTML

<!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>
        div {
            width: 100px;
            height: 100px;
            background-color: pink;
        }

        .one {
            background-color: purple;
        }
    </style>
</head>

<body>
    <div id="iii">
        hhhh
        <span>iiii</span>
    </div>
    <script>
        var div = document.getElementById('iii');
        div.onclick = function () {
            div.className = 'one';
        }
        //将Id为iii的内容文本提取出来(不提标签)
        // var text = div.innerText;
        // console.log(text);
        //将内容传到Id为iii中
        // div.innerText = 'jjj';

        //提标签
        // var text_html = div.innerHTML;
        // console.log(text_html);
        // div.innerHTML = 'hhh <span>uu<span>'
    </script>
</body>

</html>

子父节点的获取:parentNode、childNodes、children

<!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>
        .one {
            width: 100px;
            height: 100px;
            background-color: pink;
        }

        .two {
            background-color: purple;
        }
    </style>
</head>

<body>
    <div id=yeye>
        <div id="dad" class="one">
            hhhh
            <span class="two">iiii</span>
        </div>
    </div>

    <script>
        var node_dad = document.getElementById('dad');
        console.log(node_dad.parentNode);//div id yeye
        console.log(node_dad.childNodes);//[text,span.two,text]
        console.log(node_dad.children);//[span.two]
    </script>
</body>

</html>

取出第一个和最后一个子元素

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <ul>
        <li>hhh1</li>
        <li>hhh2</li>
        <li>hhh3</li>
        <li>hhh4</li>
        <li>hhh5</li>
    </ul>

    <script>
        var node_dad = document.querySelector('ul');
        console.log(node_dad.childNodes);//5个text 5个li
        console.log(node_dad.children);//5个li
        //第一个子节点,不管是文本节点还是元素节点
        console.log(node_dad.firstChild);//text
        console.log(node_dad.lastChild);//text
        //第一个子节点,元素节点
        console.log(node_dad.firstElementChild);//hh1
        console.log(node_dad.lastElementChild);//hhh5
        //实际开发写法,没有兼容性问题,返回第一个子元素
        console.log(node_dad.children[0]);
        console.log(node_dad.children[node_dad.children.length - 1]);
    </script>
</body>

</html>


http://www.kler.cn/a/413456.html

相关文章:

  • 【Python】 深入理解Python的单元测试:用unittest和pytest进行测试驱动开发
  • Oracle RMAN异机迁移数据库从文件系统至ASM
  • ffmpeg命令详解
  • 《黑神话:悟空》获TGA 2024四项提名,动作捕捉与人脸建模技术如何续写中国游戏新神话?
  • 什么是Web Worker?如何使用Web Worker?
  • Linux系統中修改IP地址詳細教程
  • Elasticseach黑马笔记
  • 【设计模式】【创建型模式(Creational Patterns)】之建造者模式(Builder Pattern)
  • AI助力PPT创作:从手动到智能,打造高效演示
  • 比特币libsecp256k1中safegcd算法形式化验证完成
  • Java基于SSM框架的校园综合服务小程序【附源码、文档】
  • thinkphp中对请求封装
  • matlab模糊fis文件制作
  • 《Vue零基础入门教程》第八课:模板语法
  • docker compose的安装和使用
  • el-row el-col显示失效问题修复
  • CTF之密码学(栅栏加密)
  • IntelliJ+SpringBoot项目实战(十六)--在SpringBoot中整合SpringSecurity和JWT(下A)
  • Jenkins流水线 Allure JUnit5 自动化测试
  • vue3项目搭建-4-正式启动项目,git管理