首页 > 其他分享 >2022.10.10

2022.10.10

时间:2022-10-10 20:11:18浏览次数:50  
标签:10 函数 DOM abs var document 2022.10 Math

1. JS的三种引入方式...

1)行内引入(行内式)

<开始标签 on +事件类型 ="js代码"></结束标签>

<!DOCTYPE html>
  <html>
  <head>
  <meta charset="utf-8">
  <title></title>
  </head>
  <body>
  <a href="https://www.baidu.com" onclick="alter('您将要跳转到百度')">百度</a>
  </body>
  </html>

2)内部引入(内嵌式)

<script>

js代码

</script>

<!DOCTYPE html>
  <html>
  <head>
  <meta charset="utf-8">
  <title></title>
  </head>
  <body>
  <script>
  alter('这是内嵌式');
</script>
  </body>
  </html>

3)外部引入(外链式)

<script type="text/javascript" src="js文件的路径"></script>

alter("这是外链式的使用");
<!DOCTYPE html>
<html lang="en">
   <head>
      <meta charset="utf-8">
      <title></title>
      <script type="text/javascript" src="importjs.js"></script>
   </head>
   <body>
   </body>
</html>

2.JS的注释

JavaScript的注释用于解释JavaScript代码,增强其可读性。JavaScript 有两种注释方式:
(1)单行注释:以//开头,任何位于//与行末之间的文本都会被JavaScript忽略。
(2)多行注释:以/* 开头,以*/结尾,任何位于/*和*/之间的文本都会被JavaScript 忽略。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
  //初始化value变量为0
  var value=0;
  /**
   * 设置节点透明度
   * node节点
   * val透明度的值
   */
  function setOpacity(node,val) {
    node.style.opacity=val;
  }
</script>
</body>
</html>

3.变量定义和赋值

JavaScript不区分整数和浮点数,统一用Number表示

  var num=1;                           //数值型变量
  var b=true;                          //布尔型变量
  var ud;                              //未赋值,其值为undefined,其类型也是undefined变量
  var str='我是字符串';                  //字符串变量
  console.log(num,b,ud,str);           //输出到控制台

null和undefined

null表示一个“空”的值,它和 0 以及 空字符串''不同,0 是一个数值,''表示长度为0的字符串,而null表示“空”。

在其他语言中,也有类似JavaScript的null的表示,例如Java也用null,Swift用nil,Python用None表示。但是,在JavaScript中,还有一个和null类似的undefined,它表示“未定义”。

4.数组定义、初始化、遍历(for in)

数组对象用来在单独的变量名中存储一系列的值。数组对象的字面量表示形式是[ ]。

  var arr1=[];                               //定义元素个数为0的数组
  var arr2=['a',2,true];                     //定义并初始化数组
  var arr2=['a',2,true];                     //定义并初始化数组
  for(var m in arr2)                         //for in语法遍历数组时,in前的变量代表下标
  {
    console.log(arr2[m]);                    //访问数组元素
  }

5.函数

无参函数定义和调用...

函数用于封装一段完成特定功能的代码

function 函数名 (参数){

函数体...

}

    function sayHello(){
        console.log('Hello');
    }
    sayHello();

定义函数

在JavaScript中,定义函数的方式如下:

function abs(x) {     
if (x >= 0) {         
return x;     
} else {         
return -x;     } } 

上述abs()函数的定义如下:

  • function指出这是一个函数定义;
  • abs是函数的名称;
  • (x)括号内列出函数的参数,多个参数以,分隔;
  • { ... }之间的代码是函数体,可以包含若干语句,甚至可以没有任何语句。

请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。

如果没有return语句,函数执行完毕后也会返回结果,只是结果为undefined。

由于JavaScript的函数也是一个对象,上述定义的abs()函数实际上是一个函数对象,而函数名abs可以视为指向该函数的变量。

因此,第二种定义函数的方式如下:

var abs = function (x) {     if (x >= 0) {         return x;     } else {         return -x;     } }; 

在这种方式下,function (x) { ... }是一个匿名函数,它没有函数名。但是,这个匿名函数赋值给了变量abs,所以,通过变量abs就可以调用该函数。

上述两种定义完全等价,注意第二种方式按照完整语法需要在函数体末尾加一个;,表示赋值语句结束。

调用函数

调用函数时,按顺序传入参数即可:

abs(10); // 返回10 abs(-9); // 返回9 

由于JavaScript允许传入任意个参数而不影响调用,因此传入的参数比定义的参数多也没有问题,虽然函数内部并不需要这些参数:

abs(10, 'blablabla'); // 返回10 abs(-9, 'haha', 'hehe', null); // 返回9 

传入的参数比定义的少也没有问题:

abs(); // 返回NaN 

此时abs(x)函数的参数x将收到undefined,计算结果为NaN。

要避免收到undefined,可以对参数进行检查:

function abs(x) {    
 if (typeof x !== 'number') {         
throw 'Not a number';     
}     if (x >= 0) {         
return x;    
 } else {         
return -x;     } }

 

 

  • 函数名称。
  • 函数的参数列表,用小括号( )括起来,并用逗号分隔
  • 定义函数的语句,用大括号括{ }起来

6.DOM元素

由于HTML文档被浏览器解析后就是一棵DOM树,要改变HTML的结构,就需要通过JavaScript来操作DOM。

始终记住DOM是一个树形结构。操作一个DOM节点实际上就是这么几个操作:

  • 更新:更新该DOM节点的内容,相当于更新了该DOM节点表示的HTML的内容;
  • 遍历:遍历该DOM节点下的子节点,以便进行进一步操作;
  • 添加:在该DOM节点下新增一个子节点,相当于动态增加了一个HTML节点;
  • 删除:将该节点从HTML中删除,相当于删掉了该DOM节点的内容以及它包含的所有子节点。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>DOM树</title>
</head>
<body>
 <a href="#">my link</a>
 <h1>my header</h1>
</body>
</html>

在操作一个DOM节点前,我们需要通过各种方式先拿到这个DOM节点。最常用的方法是document.getElementById()和document.getElementsByTagName(),

以及CSS选择器document.getElementsByClassName()。

由于ID在HTML文档中是唯一的,所以document.getElementById()可以直接定位唯一的一个DOM节点。document.getElementsByTagName()和document.getElementsByClassName()总是返回一组DOM节点。要精确地选择DOM,可以先定位父节点,再从父节点开始选择,以缩小范围。

(1) 摘取果树上的果实(获取网页元素上的内容或属性值等)的顺序是:先获取枝条(即网页上的元素),再获取枝条上的果实(元素的内部文字或属性等)。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>getElementById演示</title>
</head>
<body>
<a href="#" id="link">my link</a>
<script type="text/javascript">
  var link_a=document.getElementById('link');
  console.log(link_a.innerHTML);
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>getElementByClassName演示</title>
</head>
<body>
  <h1 class="flower">my header1</h1>
  <h2 class="flower">my header2</h2>
  <p class="flower">my p</p>
<script type="text/javascript">
  var flowers = document.getElementsByClassName('flower');
  for(var one_flower in flowers){
      console.log(flowers[one_flower].innerHTML);
  }
</script>
</body>
</html>

(2)给假树安装新树枝(向网页元素上添加新元素或给元素添加新属性等)。
顺序一:先创造并把新树枝接到树上(即把新元素添加到网页上,这种做法能立即看到新添加的元素),再把果实接到这段新树枝上(即给新树枝添加子内容或属性)。

var newp= document.createElement("p"); // 创造的新柯枝,此时网页上看不到这个p
document.body.appendChild(newp); // 把新树枝安装到网页上,可以在开发者工具审查中看到了
newp.innerHTML='新的树枝';//新创建果实并安装到新树枝上,网页上可见

顺序二:创造一段新树枝(即创建一个网页元素,这种做法不能立即在网页上看到新内容),然后创造其他更小的树枝或果实(这时候这些树枝还是独立的),再把小树枝或果实安装到大树枝上(这时候网页上还看不到内容),最后把大树枝接到网页这棵大树的已经可以看到的某条树枝上(新内容可以看到了)。

var newp= document.createElement("p"); //创造的新树枝, 此时网页上看不到这个P
newp.innerHTML='新的树枝';//新创建果实并安装到新树枝上, 网页上不可见
document.body.appendChild(newp);//把新树枝安装到网页上,可以在开发者工具审查中看到了

7.定时器方法setTimeout和

setTimeout()是属于window的方法,该方法用于在指定的毫秒数后调用一次函数或计算表达式。

语法格式: setTimeout(javaScript函数,等待的毫秒数)

其返回值表示代表该定时器的句柄。
clearTimeout()方法可取消由setTimeout()方法设置的定时操作。clearTimeoutO 方法的参数必须是由setTimeout()返回的ID值。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>setTimeout 演示</title>
</head>
<body>
<script type="text/javascript">
  var n=1;
  //下面这段代码能输出到10吗?
  var id=setTimeout(function (){
    console.log(n++);
    if(n>10) clearTimeout(id);
  },1000);
  //下面这段代码能输出到10吗?
  var m=1;
  var im;
  function hi(){
    console.log(m++);
    im=setTimeout(hi,1000);
    if(m>10) clearTimeout(im);
  }
  hi();
</script>
</body>
</html>

8.onload 事件

onl oad事件会在页面或图像加载完成后立即发生,最常用于<body>元素中,用于在网页完全加载所有内容(包括图像、脚本文件、CSS文件等)后执行脚本。
onload在HTML中的用法: <body onl oad="SomeJavaScriptCode">

onload在JavaScript中的用法: window.onload=function(){SomeJavaScriptCode};

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>onload  演示</title>
    <script>
      //下面代码会出错,为什么?
      document.getElementById('myp').innerHTML='你好';

      window.onload=function (){
        //下面代码不会出错,为什么?
        document.getElementById('myp').innerHTML='你好';
      }
    </script>
</head>
<body>
    <p id="myp">hi,everyone</p>
    <script type="text/javascript">
      //下面代码不会出错,上面相同的语句会出错,为什么?
      document.getElementById('myp').innerHTML='你好';
    </script>
</body>
</html>

9.随机数和取整

JavaScript中Math对象用于执行数学任务。Math 对象并不像Date和String那样是对象的类,因此没有构造函数Math(。像Math.sin()这样的函数只是函数,不是某个对象的方法,所以无需创建它。通过把Math作为对象使用就可以调用其所有属性和方法。

Math对象与随机数和取整有关的方法

Math.ceil(x)

对数进行上舍入。(向上取整;大于等于x的最小整数)

Math.floor(x)

对数进行下舍入。(小于等于x的最大整数)

Math.random()

返回 0 ~ 1 之间的随机数。(此方法可扩展,如:取一定范围内的随机整数…)

Math.round(x)

把数四舍五入为最接近的整数。(对x四舍五入)

Math.abs()

取绝对值

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>随机数和取整</title>
	</head>
	<body style="">
		<script type="text/javascript">
			//第一步:获取0~1之间的随机数,注意这里是小数
			var r=Math.random(),g=Math.random(),b=Math.random();
			//第二步:扩展随机数的范围到 m-n(m减n),调整后的范围是最小为0,最大为m-n
			//r=r*(m-n);
			r=r*(255-0);
			g=g*255;
			b=b*255;
			//第三步:调整区间最小值为n,最大值为m;本例最小值为0,此步跳过
			//r=r+n;
			//第四步:向下取整获得整数[n,m)
			//r=Math.floor(r);
			r=Math.floor(r);
			g=Math.floor(g);
			b=Math.floor(b);
			document.body.style.backgroundColor="rgb("+r+","+g+","+b+")";
		</script>
	</body>
</html>

10.getElementsByClassName方法

document.getElementByClassName(classname)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<p class='duan'>第一段</p>
		<p class='luo'>第二段</p>
		<p class='duan'>第三段</p>
		<p id='duan'>第四段</p>
		<script>
			var duans=document.getElementsByClassName('duan');
			for(var i=0;i<duans.length;i++){
				duans[i].style.border='1px solid red';
			}
		</script>
	</body>
</html>

11.选择结构

if单分支:当满足特定条件时执行的代码块。

if(条件){

如果条件为true时执行的代码

}

if双分支:当满足特定条件时执行一部分的代码块,不满足时执行另一部分代码块。

if(条件){

条件为true时执行的代码块

}else{

条件为false时执行的代码块

}

if多分支:当满足不同的条件时执行不同的代码块。

if(条件1){

条件1为true时执行的代码的代码块

}else if(条件2){

条件1为false而条件2为true时执行的代码的代码块

}else{

条件1和条件2同时为false时执行的代码块

}

标签:10,函数,DOM,abs,var,document,2022.10,Math
From: https://www.cnblogs.com/emilyiee/p/16777026.html

相关文章

  • 考研记录Week20【10.3~10.9】
    一、本周总结:使用时间:【后期专业课和数学都要多花时间了!!!】总计44h9min,高数11h23min,英语10h31min,操作系统6h53min,政治10h31min,数据结构与算法30min.完成任务:英语:1.2020~202......
  • Leecode104 二叉树的最大深度
    //DFS解法前序遍历/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*Tr......
  • stm32cubemx配置f103zet6定时器中断,pwm波输出模式,输出捕获模式 慢慢更新
    定时器详细介绍(基于标准库的,原理部分可参考): STM32-定时器详解_KevinFlyn的博客-CSDN博客_stm32定时器1.定时器中断配置配置参考 STM32CubeMX配置定时器中断_小哥。的......
  • 闲话 22.10.10
    闲话昨天晚上梦见机房里放《萤火虫从未来过》然后切到《无梦之梦》但是醒了还是新宝岛果然想听歌了哪位大佬能跟我说说饭的近况啊谢谢了好今天一道李超树一道树上背......
  • 【镜像下载】大更新:Windows 11 (22449.1000 / 22000.176) 八合一纯净版
    今天凌晨,微软照例向Beta和Dev通道的 Windows 预览体验用户推送了本周Windows11预览版的更新,和上几周不同的是,本次向 Beta 和 Dev通道推送的是不同的版本:Beta......
  • Win10家庭版如何强制开启组策略
    组策略是Windows系统中一个非常重要的功能,经常折腾电脑的朋友都知道,虽然控制面板和设置已经提供了丰富的设置选项,但一些深层次的或者高级的设置都需要在组策略中调整。但是......
  • 10.10
    今日内容1.位置参数2.默认参数3.可变长形参4.可变长实参5.命名关键字参数6.名称空间7.名称空间存活周期及作用范围8.名称的查找顺序9.查找顺序案例1.位置参数当......
  • 怎么从微软官网下载纯净版的Windows10系统镜像?
    关于Windows10系统镜像的下载,源哲之前给大家介绍了使用微软的 「​​MediaCreationTool(MCT)」工具​​ 和知名网站「​​ MSDN我告诉你​​ 」。就我个人的体验,MCT工具主......
  • 开启Win10强大的“上帝模式”:所有选项、任你设置
    要对Windows系统进行选项调整,用到的基本都是“控制面板”和“设置”这两个组件,但相信不少人都吐槽过有些设置选项隐藏得太深了,即使是老司机都不一定能完全摸清,新手更是无从......
  • 【JZ10】斐波那契数列
    1.斐波那契数列输入正整数n,1≤n≤40,求\(f(n)\)2.解publicclassSolution{publicintFibonacci(intn){if(n==1||n==2){return......