JS
Ⅰ.显示数据
- 使用 window.alert() 弹出警告框。
- 使用 document.write() 方法将内容写到 HTML 文档中。
- 使用 innerHTML 写入到 HTML 元素。
- 使用 console.log() 写入到浏览器的控制台。
1.window.alert()
这之中可以进行运算,如果输出不是字符,可以不要”“
操作HTML元素
如需从 JavaScript 访问某个 HTML 元素,您可以使用 document.getElementById(id) 方法。
请使用 “id” 属性来标识 HTML 元素,并 innerHTML 来获取或插入元素内容:
例如:
|
2.document.write()
如果在文档已完成加载后执行 document.write,整个 HTML 页面将被覆盖
网页加载后输出流就已经停止,重新调用document.write()就会发生覆盖,
事实上write方法会隐性调用open方法写一个新的文档(所以要加标签),如果强制使用close方法,会直接输出所有缓存的输出内容,理论上一旦调用了close方法,就不能在用write,这样也会覆盖
3.console.log()
其中为输出的变量,这是写在控制台用于调试(F12),不会出现在网页上
Ⅱ.语法
//注释方法同C语言
1.字面量
数字(Number)
可以是整数或者是小数,或者是科学计数(e),输出时不会使用科学计数法
字符串(String)
可以使用单引号或双引号:
表达式
用于计算: 比如1/1
数组(Array)
定义一个数组:[]
定义方法:
var cars=new Array(); |
注意:typeof不能区分数组和对象,都会输出对象,要用:
if(car instanceof Array){ |
对象(Object)字面量
定义一个对象: {firstName:”John”, lastName:”Doe”, age:50, eyeColor:”blue”}
定义方法:
var person={firstname:"John", lastname:"Doe", id:5566}; |
寻址方式:
name=person.lastname; |
函数(Function)
定义一个函数: function myFunction(a, b) { return a * b;}
带参数的变量使用:
<p>点击这个按钮,来调用带参数的函数。</p> |
带有返回值的函数:和C一样 return 变量;
注意: 整个 JavaScript 并不会停止执行,仅仅是函数。JavaScript 将继续执行代码,从调用函数的地方。
如果只是想退出函数,不继续执行,那么return可以不带任何参数
2.变量
<script> |
//undefined 和 [null](用于清空变量,var a=null)
如果在判断之后输出,都会是undifined
//字面量是不可变的运算符同样可以出现在赋值中
//和python一样,变量是动态类型,可以使用typeof()来查看变量类型
//存在布尔量,写为var x=true/false;
运算符
类型 | 实例 | 描述 |
---|---|---|
赋值,算术和位运算符 | = + - * / | 在 JS 运算符中描述 |
条件,比较及逻辑运算符 | == != < > | 在 JS 比较运算符中描述 |
function用于定义函数在{}之间的会一并执行
js会忽略多余的空格,可以随便加以提高可读性
可以在字符串中使用\折行,可以正常显示
JavaScript 是脚本语言,浏览器会在读取代码时,逐行地执行脚本代码。而对于传统编程来说,会在执行前对所有代码进行编译。
声明变量类型
可以使用关键词 “new” 来声明其类型:
var carname=new String; |
对象属性
[JavaScript 变量均为对象](可以说 “JavaScript 对象是变量的容器”。但是,我们通常认为 “JavaScript 对象是键值对的容器”。键值对通常写法为 name : value (键与值以冒号分割)。键值对在 JavaScript 对象通常称为对象属性。 JavaScript 对象是属性变量的容器)
访问对象属性的方法:
person.lastName; |
对象方法
对象的方法定义了一个函数,并作为对象的属性存储。
对象方法通过添加 () 调用 (作为一个函数)。
var person = { |
访问对象方法
创建:
methodName : function() { |
访问:
var person = { |
EX局部变量
在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它。(该变量的作用域是局部的)。
您可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量。
只要函数运行完毕,本地变量就会被删除。
不在函数内声明的就是全局变量,它会在页面关闭后删除(这就是变量的生命周期)
BEFORE作用域
作用域类型
- 全局作用域:
- 全局作用域中的变量在整个程序中都可以访问。
- 例如,在浏览器中,全局作用域由
window
对象表示。
- 函数作用域:
- 函数作用域中的变量只能在该函数内部访问。
- 当函数执行完毕后,函数作用域中的变量通常会被销毁。
- 块级作用域:
- 块级作用域中的变量只能在特定的代码块(如
if
语句、for
循环、while
循环等)内部访问。 - JavaScript ES6 引入了
let
和const
关键字,允许在块级作用域中声明变量。
- 块级作用域中的变量只能在特定的代码块(如
作用域链
作用域链是一系列嵌套的作用域,从当前作用域开始,一直到全局作用域结束。当查找变量时,JavaScript 引擎会沿着作用域链向上查找,直到找到该变量或到达全局作用域。
EX未声明的变量
如果您把值赋给尚未声明的变量,该变量将被自动作为 window 的一个属性。
var声明的属于不可配置全局属性,没有则是[可配置全局属性](非严格模式下给未声明变量赋值创建的全局变量,是全局对象的可配置属性,可以使用delete var删除。)
在 HTML 中, 全局变量是 window 对象,所以 window 对象可以调用函数内的未声明(未加 var)的局部变量。
注意:所有数据变量都属于 [window 对象]( 全局变量,或者函数,可以覆盖 window 对象的变量或者函数,因此,自设变量时尽量不要和已有的window变量或函数重名,这样会覆盖掉。局部变量,包括 window 对象可以覆盖全局变量和函数。 )。
外部访问局部变量
通过全局对象:在函数内部,可以通过将局部变量赋值给 window 对象的属性来使其成为全局可访问的。例如,使用 window.a = a; 语句,可以在函数外部通过 window.a 访问到这个局部变量的值。
定义全局变量:在函数内部不使用 var、let 或 const 等关键字声明变量时,该变量会被视为全局变量,从而可以在函数外部访问。但这种做法通常不推荐,因为它可能导致意外的副作用和代码难以维护。
返回值:可以通过在函数内部使用 return 语句返回局部变量的值,然后在函数外部接收这个返回值。这样,虽然局部变量本身不会被暴露,但其值可以通过函数调用传递到外部。
闭包:JavaScript 中的闭包特性允许内部函数访问外部函数的局部变量。即使外部函数执行完毕后,其局部变量仍然可以被内部函数引用。
属性和方法:定义在全局作用域中的变量和函数都会变成 window 对象的属性和方法,因此可以在调用时省略 window,直接使用变量名或函数名。
闭包的一个重要特性是它们可以访问创建时的作用域,即使外部函数已经执行完毕。这意味着闭包可以访问外部函数的局部变量,即使这些变量在外部函数执行完毕后仍然存在。
3.事件
DOM
通过 [HTML DOM](当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。),可访问 JavaScript HTML 文档的所有元素。
HTML DOM模型被构造为对象的树:
js可以改变页面中的:
html元素,html属性(属性本身实际上也以是js),css样式
还可以对事件做出反应
Ⅰ.查找 HTML 元素
通过 id 找到 HTML
var x=document.getElementById("intro"); //未找到就是null |
通过标签名找到 HTML
var y=x.getElementsByTagName("p"); //就是找标签是<p> |
通过类名找到 HTML
var x=document.getElementsByClassName("intro"); |
Ⅱ.改变HTML
1.输出流
document.write() |
2.内容
document.getElementById("id").innerHTML="新的 HTML" |
3.属性
document.getElementById("id").attribute="新属性值" |
4.样式(css)
document.getElementById(id).style.property=新样式 |
5.使用事件
包括但不限于:
- 元素被点击。
- 页面加载完成。
- 输入框被修改。
比如:
<button type="button" onclick="document.getElementById('id1').style.color='red'"> |
还有:
<p id="p1">这是一个文本。 这是一个文本。 这是一个文本。 这是一个文本。 这是一个文本。 这是一个文本。 这是一个文本。</p> |
6.事件反应
包括但不限于:
- 当用户点击鼠标时
- 当网页已加载时
- 当图像已加载时
- 当鼠标移动到元素上时
- 当输入字段被改变时
- 当提交 HTML 表单时
- 当用户触发按键时
比如:
<h1 onclick="this.innerHTML='Ooops!'">点击文本!</h1> |
除了onclick事件之外,还有:
onload与onunload
<–它们用于处理cookie,onload还用于事先检测访问者的浏览器类型和版本–>
onchange
<script> |
onmousedown与onmouseup
onmouseover 和 onmouseout
<body> |
EXTRA this
这里说说这个this,它是js中的一个关键字,它在函数被调用时自动创建并用作指向调用该函数的上下文的引用。
在函数中它代表了调用函数的这个元素(作为一个对象)。
如果将其填入变量位置,则表示调用这个函数的这个元素的值。(就像上面)
也就是说
onmouseover="mOver(this)" |
onfocus
<script> |
其他事件对象:https://www.runoob.com/jsref/dom-obj-event.html
7.addEventListener()
用于为元素添加一个或多个事件句柄(其实就是onclick之类的) 不会覆盖,可以重复。
比如:
<p>该实例使用 addEventListener() 方法在按钮中添加点击事件。 </p> |
IE8以及之前的用的是attachEvent()和detachEvent()
解决办法:
var x = document.getElementById("myBtn");if (x.addEventListener) { |