Js day1

JS概述

JS(JavaScript)是一种解释型脚本语言,运行在浏览器中,处理网页上行为(动作)

JS书写的位置

  • 标签的事件
  • script标签
  • 外部文件
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <!-- 3.用script标签引入独立js文件 -->
        <script src="./js/my.js"></script>
    </head>
    <body>
        <!-- 1. onxxxx就是标签的事件,事件里面可以直接写js代码 -->
        <input type="button" value="点我" onclick="alert()">
        <!-- 2. script标签里面写js代码
一般放在/body之前
-->
        <script type="text/javascript">
            // alert()
        </script>
    </body>
</html>

注释

// 单行
/* 多行注释 */

输出信息

  • alert() 弹出警告框
  • console.log() 控制台输出
  • document.write()

变量和函数定义

6种数据类型

  • string

  • number

  • boolean

  • object

  • function

  • symbol

  • 3种对象类型

    • object
    • date
    • array
  • 变量定义

    • var i = 10
    • var s = ‘abc’
    • var arr = []
    • var obj = {}
    • let a = 5
    • const pi = 3.14
  • 函数定义
    参数没有类型
    函数也没有返回类型,如果函数体有return语句就有返回;如果没有return语句,无返回
    function fu1(arg1){
    }

事件

  • onclick 点击事件
  • onchange 内容改变事件,一般用于输入框
  • onmouseover 鼠标滑过事件,类似hover
  • onload 页面加载事件
  • onfocus 获得焦点事件,一般用户输入框

练习:js控制标签的显示

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style type="text/css">
            .box{
                width: 100px;
                height: 100px;
                background-color: red;
                display: none;
            }
        </style>
    </head>
    <body>
        <input type="button" value="显示" onclick="show()">
        <div class="box" id="box">
        </div>
        <script type="text/javascript">
            //alert();
            // 浏览器调试窗口的控制台输出
            console.log("hello js");
            // 浏览器窗口输出
            document.write('<h1>标题</h1>') //js的字符串可以单引号或双引号
            //让div标签显示
            function show(){
                //获取标签对象
                let box = document.getElementById('box')
                //设置标签的样式
                box.style.display = 'block'
            }
        </script>
    </body>
</html>

DOM操作

(Document Object Model ,文档对象模型,简称DOM)

  • 获取标签对象

    document.getElementById() 根据id获取标签

    document.getElementsByTagName() 根据标签名获取标签

    document.getElementsByClassName() 根据class获取标签

    document.querySelector() 根据选择器获取标签

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>选择标签</title>
    </head>
    <body>
        <div id="box1">
        </div>
        <div class="box">
        </div>
        <div class="box">
        </div>
        <script type="text/javascript">
            let box1 = document.getElementById('box1');
            console.log(box1);
            let box2 = document.querySelector('#box1')
            console.log(box2);
            // 返回标签数组,可用下标取其中的某一个,也可以遍历
            let boxs = document.getElementsByTagName('div')
            console.log(boxs);
            console.log(boxs[0]);
            for(let i=0; i<boxs.length; i++){
                console.log(boxs[i]);
            } 
            let boxs2 = document.getElementsByClassName('box')
            console.log(boxs2);
        </script>
    </body>
</html>
  • 改变标签的样式和内容

    style.xxx 设置或读取样式

    innerText 设置或读取标签的文本内容

    innerText 设置或读取标签的文本内容

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>改变标签的样式或内容</title>
        <style type="text/css">
            #box{
                width: 100px;
                height: 100px;
                background-color: red;
                position: relative;
                color: white;
            }
        </style>
    </head>
    <body>
        <input type="button" value="改变标签" onclick="change()">
        <div id="box">
        </div>
        <script type="text/javascript">
            function change(){
                let box = document.getElementById('box')
                /* 标签的样式名称在css中用-连接多个单词如background-color;
在js中用驼峰命名方式 backgroundColor */
                box.style.backgroundColor = 'blue'
                box.style.width = '200px'
                box.style.height = '200px'
                box.style.left = '500px'
                // innerText 改变标签的文字内容
                box.innerText = 'Js改变的内容'
                // 改变标签的子标签
                box.innerHTML = '<p>p1</p><p>p2</p>'
                console.log(box.innerHTML);
            }
        </script>
    </body>
</html>

value 读取或设置输入框的内容

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>表单标签的读写</title>
    </head>
    <body>
        <input type="button" value="读输入框的值" onclick="read()">
        <input type="button" value="输入框赋值" onclick="setValue()">
        <br>
        <input type="text" id="txt1">
        <script type="text/javascript">
            let txt1 = document.getElementById('txt1')
            function read(){
                console.log(txt1.value)
            } f
            unction setValue(){
                // 创建日期对象
                let d = new Date();
                txt1.value = d.getTime()
            }
        </script>
    </body>
</html>

练习:加法器

image-20230817195504056

  • NaN Not a Number, 有时数字运算方法不能返回数字时,就可能返回NaN

    isNaN()方法可以判断一个变量是否是数字

  • undefined 当一个变量未定义,它就是undefined

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>加法器</title>
        <style type="text/css">
            span{
                cursor: pointer;
                font-size: 25px;
            }
        </style>
    </head>
    <body>
        <input type="text" id="op1"> +
        <input type="text" id="op2">
        <span onclick="sum()">=</span>
        <input type="text" id="sum">
        <script type="text/javascript">
            function sum(){
                //debugger //断点
                let op1 = document.getElementById('op1')
                //parseInt()把字符串转整数
                let value1 = parseInt(op1.value)
                let op2 = document.getElementById('op2')
                let value2 = parseInt(op2.value)
                // + 对字符串就是拼接, 对数字才是相加
                let valueSum = add(value1, value2)
                let sum = document.getElementById('sum')
                sum.value = valueSum
            } f
            unction add(v1, v2){
                return v1 + v2
            }
        </script>
    </body>
</html>
  • 改变标签的属性

obj.xxx

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>修改标签的属性</title>
        <style type="text/css">
            #pic{
                width: 200px;
                height: 200px;
            }
        </style>
    </head>
    <body>
        <input type="button" value="修改图片" onclick="chgPic()">
        <img src="./img/animal1.jpeg" id="pic">
        <script type="text/javascript">
            let imgs =
                ['./img/animal1.jpeg','./img/animal2.jpg','./img/animal3.gif','./img/animal4.jpg
                 ']
                 let index = 1
                 function chgPic(){
                     let pic = document.getElementById('pic')
                     //修改标签的属性
                     pic.src = imgs[index]
                     index++
                     if(index >= 4){
                         index = 0;
                     }
                 }
        </script>
    </body>
</html>

练习:广告轮播图

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>广告轮播图</title>
        <style type="text/css">
            #pic{
                width: 200px;
                height: 200px;
            } #
            list li{
                float:left;
                margin:10px;
                cursor:pointer;
            }
        </style>
    </head>
    <body>
        <img src="./img/animal1.jpeg" id="pic">
        <ul id="list">
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
        <script type="text/javascript">
            let imgs =
                ['./img/animal1.jpeg','./img/animal2.jpg','./img/animal3.gif','./img/animal4.jpg
                 ']
                 let index = 1
                 let pic = document.getElementById('pic')
                 function chgPic(){
                     //修改标签的属性
                     pic.src = imgs[index]
                     index++
                     if(index >= 4){
                         index = 0;
                     }
                 } /
                     * 定时函数:
                     第一个参数是要执行的方法
                     第二个参数是定时时间,单位毫秒 */
            setInterval(()=>{
                chgPic()
            }, 3000);
            let lis = document.getElementsByTagName('li')
            for(let i=0; i<lis.length; i++){
                //给标签添加自定义属性n, 用来记录标签的序号
                lis[i].n = i;
                lis[i].onmouseover = (e)=>{
                    // debugger
                    pic.src = imgs[e.target.n]
                }
            }
        </script>
    </body>
</html>

练习:

  1. js中var与let的区别?

old:

使用var来声明变量,这些变量在函数内或全局范围内都可见。

使用let来声明变量,这些变量在花括号 {} 内可见,外面不可见。

另外:

如果使用var,变量的声明会被提升到作用域的顶部,但值会是undefined

如果使用let,在变量声明之前引用会导致错误,直到声明的地方。

JavaScript推荐使用let,因为它更符合直观的作用域概念,避免了一些潜在问题。

new:

var只有全局和函数变量;let还支持代码块局部变量

var可以重复定义;let不能重复定义

  1. 动态生成10个div

image-20230818100627210

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>动态输出10横向排列的div</title>
        <style type="text/css">
            .box{
                width: 100px;
                height: 100px;
                border: 1px solid red;
                display: inline-block;
                margin: 10px;
            }
            body{/*1.flex  2.inline-block 3.float 4 position: ;*/
                /* display: flex; */
                /* justify-content: space-between; */
            }
        </style>
    </head>
    <body>
        <!-- 1.先用HTML把画面效果写出来 -->
        <!-- <div class="box">

</div>
<div class="box">

</div> -->

        <script type="text/javascript">
            for(let i=0; i<10;i++){
                // 2.再用js写效果, 通常使用字符串拼接 或者write直接写内容
                // 	document.write('<div class="box">'+

                // 	'</div>')
                document.body.innerHTML += '<div class="box">'+

                    '</div>'

            }
        </script>
    </body>
</html>
  1. 输入框输入课程名称,点击添加按钮,在下面的列表增加一项

image-20230818100656765

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>输入框输入课程名称,点击添加按钮,在下面的列表增加一项  </title>
		<style type="text/css">
			ul{
				list-style: circle;
			}
		</style>
	</head>
	<body>
		<input type="text" id="txt"> <!--输入框是行内元素,不换行-->
		<input type="button" value="添加" onclick="add()">
		<ul id="list1">
<!--			<li>Java</li>-->
		</ul>
		
		<script type="text/javascript">
			// 定义add函数
			function add(){
				// 获取输入框
				let txt = document.getElementById('txt');
				
				// 读取输入框的value
				let v = txt.value;
				
				// 把value添加到列表
				let list1 = document.getElementById('list1')
				// list1.innerHTML += '<li>Java</li>';
				list1.innerHTML += '<li>'+v+'</li>';
				
			}
		</script>
	</body>
</html>
  1. 动画效果:

一个div, 从左向右移动500px的位置

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>4. 动画效果:一个div, 从左向右移动500px的位置  </title>
		<style type="text/css">
			.box{
				width: 100px;
				height: 100px;
				border: 1px solid red;
				position: relative;
			}
		</style>
	</head>
	<body>
		<div id="box" class="box"></div>
		
		<script type="text/javascript">
			let i = 0; //初始位置
			// 需要一个定时器
			let timer = setInterval(() => {
				// 获取标签
				let box = document.getElementById('box');
				
				// box.style.left += "10px"
				i += 10; //位置移动 10
				
				// 设置left样式
				box.style.left = i + "px"
				if(i >= 500){
					// 清除(停止)定时器。 参数是setInterval() 方法的返回值
					clearInterval(timer);  
				}
				
			}, 100)  //回调函数使用lambda表达式书写 ,一个形参的情况下()可以省略
			
			
			
			
		</script>
	</body>
</html>
  1. 完善广告轮播图

把圆点放到图片里面
在图片所有各放一个上一张和下一张的按钮

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>广告的轮播</title>
        <style type="text/css">
            #pic {
                width: 100%;
                height: 100%;
            }

            #list {
                position: absolute;
                bottom: -30px;
                left: 40px;
            }

            #list li {
                /* list-style: ; */
                float: left;
                margin: 10px;
                cursor: pointer;
                /* 图标大小随字体大小改变 */
                font-size: 30px;
                opacity: 0.4;

            }

            .active {
                color: red;
            }

            .outer {
                width: 200px;
                height: 200px;
                position: relative;
            }

            .next, .prev {
                width: 20px;
                height: 20px;
                background-color: gray;
                border-radius: 50%;
                color: white;
                /* 内容居中 */
                text-align: center;
                line-height: 20px;
                cursor: pointer;
                opacity: 0.5;
                position: absolute;
                top: 90px;
            }

            .next {
                position: absolute;
                right: 0;
            }
        </style>
    </head>
    <body>
        <div class="outer">
            <img src="./img/animal1.jpeg" id="pic">
            <ul id="list">
                <li class="active"></li>
                <li></li>
                <li></li>
                <li></li>
            </ul>
            <div class="next" onclick="go(1)">
                >
            </div>
            <div class="prev" onclick="go(-1)">
                <
            </div>
            </div>
            <script type="text/javascript">
                let imgs = ['./img/animal1.jpeg', './img/animal2.jpg', './img/animal3.gif', './img/animal4.jpg'];
                let index = 1;  /* 全局变量*/
                let pic = document.getElementById('pic');
                let lis = document.getElementsByTagName('li')

                function go(i) {
                    index += i;
                    if (index >= 4) {
                        index = 0;
                    }
                    if (index < 0) {
                        index = imgs.length - 1;
                    }
                    pic.src = imgs[index];
                    // 清楚所有li的class
                    clearClassName();
                    lis[index].className = "active";
                }

                function chgPic() {
                    // 清楚所有li的class
                    clearClassName();
                    lis[index].className = "active";

                    // 修改标签的属性
                    pic.src = imgs[index];
                    index++;
                    if (index >= 4) {
                        index = 0;
                    }
                }

                /* 定时函数:
        第一个参数是要执行的方法
        第二个参数是定时时间,单位毫秒 */
                setInterval(() => {
                    chgPic()
                }, 3000);


                for (let i = 0; i < lis.length; i++) {
                    // 给标签添加自定义属性n,用来记录标签的序号
                    lis[i].n = i;
                    lis[i].onmouseover = (e) => {
                        // 清楚所有li的class
                        clearClassName();
                        // debugger
                        pic.src = imgs[e.target.n]
                        index = e.target.n;
                        e.target.className = "active"
                    }
                }

                function clearClassName() {
                    for (let j = 0; j < lis.length; j++) {
                        // 清除所有li的class
                        lis[j].className = "";
                    }
                }
            </script>
            </body>
        </html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值