技术标签: css html5 前端 html javascript
HTML
是一种标记语言,用来结构化我们的网页内容并赋予内容含义,例如定义段落、标题和数据表,或在页面中嵌入图片和视频。CSS
是一种样式规则语言,可将样式应用于 HTML 内容,例如设置背景颜色和字体,在多个列中布局内容。JavaScript 最初被称为 LiveScript,由 Netscape(Netscape Communications Corporation,网景通信公司)公司的布兰登·艾奇(Brendan Eich)在 1995 年开发(这哥们在两周之内设计出了JavaScript语言。你没看错,这哥们只用了10天时间。)。在 Netscape 与 Sun(一家互联网公司,全称为“Sun Microsystems”,现已被甲骨文公司收购)合作之后将其更名为了 JavaScript。
图:布兰登·艾奇,JavaScript 创始人
之所以将 LiveScript 更名为 JavaScript,是因为 JavaScript 是受 Java 的启发而设计的,因此在语法上它们有很多相似之处 ,JavaScript 中的许多命名规范也都借鉴自 Java,还有一个原因就是为了营销,蹭 Java 的热度。
同一时期,微软和 Nombas(一家名为 Nombas 的公司)也分别开发了 JScript 和 ScriptEase 两种脚本语言,与 JavaScript 形成了三足鼎立之势。它们之间没有统一的标准,不能互用。为了解决这一问题,1997 年,在 ECMA(欧洲计算机制造商协会)的协调下,Netscape、Sun、微软、Borland(一家软件公司)组成了工作组,并以 JavaScript 为基础制定了 ECMA-262 标准(ECMAScript)。第二年,ISO/IEC(国际标准化组织及国际电工委员会)也采用了 ECMAScript 作为标准(即 ISO/IEC-16262)。
JavaScript与ECMAScript的关系:
本质上都跟一门语言有关,一个是语言本身的名字,一个是语言的约束条件,后者是前者的规格,前者是后者的一种实现。
ECMAScript
: 构成了JS的核心语法
BOM
:Browser Object Model【浏览器对象模型】,用来操作浏览器上的对象
DOM
:Document Object Model【文档对象模型】,用来操作网页中的元素
ECMAScript
: 定义了javascript的语法规范,描述了语言的基本语法和数据类型BOM
(Browser Object Model): 浏览器对象模型
DOM
(Document Object Model): 文档对象模型
总结
: JS 就是通过固定的语法去操作 浏览器 和 标签结构 来实现网页上的各种效果
在 HTML 中使用 JS 可以用以下几种方式实现:
行内式,可以在 html 元素中直接用使用 js 语句,但是一般都是调用函数或简短的语句。
<input type="button" value="Click" onclick="alert('Hellow World')">
内嵌式,一般用于实现比较小的功能,代码不长的情况
<script>
alert('Hello World');
</script>
外部JS文件,最常见的方式
<script src="js路径"></script>
// 单行注释
/* 多行注释 */
alert(msg) // 浏览器弹出框
console.log(msg) // 浏览器控制台打印输出信息
prompt(info) // 浏览器弹出输入框,用户可以输入
confirm()
onclick
鼠标点击左键ondbclick
鼠标双击oncontextmenu
鼠标点击右键mousedown
鼠标按键被按下mouseup
松开鼠标按键onselect
文本被选中oncopy
元素内容被复制onmouseenter
鼠标移动到事件监听的元素内(不区分子元素)onmouseover
鼠标移动到有事件监听的元素或它的子元素内onmouseleave
鼠标离开元素外(不区分子元素)onmouseout
鼠标离开元素,或它的子元素外onfocus
获得鼠标焦点(点击input输入框)onblur
失去鼠标焦点(进入其他input输入框)onmousemove
鼠标移动onmouseup
鼠标弹起onmousedown
鼠标按下
HTML DOM 能够通过 JavaScript 进行访问(也可以通过其他编程语言)。在 DOM 中,所有 HTML 元素都被定义为对象。我们可以通过 Javascript 对这些对象操作,改变 HTML 元素的内容。
可以通过标签中的id属性来获取这个标签中的值
<div id="a">This is new Element</div>
<script>
// 页面文档从上往下加载,需要将 script 代码写在下边
var dom = document.getElementById('a');
// 显示id为new的对象中内容
console.log(dom);
// 可以打印我们返回的元素对象,更好的查看里边的属性和方法
console.dir(dom);
</script>
ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers Association)通过ECMA-262标准化的脚本程序设计语言。
变量是程序在内存中申请的一块用来存放数据的空间。通过变量名称我们可以使用或修改保存在系统中的对应的数据。
Js 是一种弱类型或者说动态语言,不用提前声明变量的类型,变量的类型会自动判断。即使赋值之后,变量的类型根据重新赋值的数据类型同样进行改变。
var a; // 声明一个名称为a的变量
a= 12; // 给a这个变量赋值为12
var age = 12
var name = 'Tom'
name = 'OO' // 再次给相同变量赋值则不用 var 进行初始化
var name = prompt('请输入你的名字')
alert(name)
myName
//利用js输出语句进行打印
//F12在控制台上查看
console.log(变量名);
NaN
非数字 Not a Number
var a="字符串";
//字符串转义符
\n //换行
\r //回车
\\
\'
\"
\t
\b // 空格
\xnn // 16进制字符,如 \x41 代表 'A'
\unnn // 16进制 unicode 字符, 如 \u03a3 代表∑
//字符串长度
变量名.length
布尔型 Boolean 只有两个值,一个是 true,代表1; 一个是 false,代表0
一个声明后没有被赋值的变量会有一个默认值 undefined
变量被声明了,但没有赋值时,就等于undefined。
调用函数时,应该提供的参数没有提供,该参数等于undefined。
对象没有赋值的属性,该属性的值为undefined。
函数没有返回值时,默认返回undefined。
undefined 和 null 的区别
只设置了null作为表示"无"的值。根据C语言的传统,null被设计成可以自动转为0。JavaScript的最初版本是这样区分的:null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。
typeof()//查看数据类型
null //返回object类型
toString()//转换为字符串类型
parseInt()//转换为数字类型
parseFont()//转换浮点型
Number()//强制转换
//隐性转换,可以用 - * / (加号正能用作正负值将字符串转为数字型,如果用在变量后边则变为拼接字符串)
Boolen()//转换为布尔类型
表达式:任何能代表值的式子
+ - * / %
浮点数运算精度问题,尽量避免用浮点数直接进行运算
++i; // 前置递增(先自加后返回)
--i; // 前置递减
i++; // 后置递增(先返回值,后自增)
i--; // 后置递减
比较运算符,是两个数据进行比较时所使用的运算符,比较运算后,会返回一个布尔值(true / false)作为运算结果。
// 普通比较运算符
<
>
>=
<=
== // 不会比较数据类型 (1 == '1' 为真)
=== // 会比较数据类型
!=
!== // 全不等(包括数据类型)
- 比较运算符两侧表达式先转为布尔型再进行比较
- ‘0’ 用 Boolen() 做判断的时候是 true,但是用 == 比较运算符和布尔值比较的时候 ‘0’ 是 false,但 ‘0’ == 0 是真
- undefined 和 null 在 Boolen() 做判断的时候是 flase,但是用 == 比较的时候他们不等于 false
- NaN 和任何值都不相等,包括它本身,即 NaN == NaN 为假
&& 与
\|\| 或
! 非
+=
-=
*=
/=
.、[ ]、( ) 从左到右
++、--、-、!、new、typeof 从右到左
*、/、% 从左到右
+、- 从左到右
<、<=、>、>=、in、instanceof 从左到右
==、!=、===、!== 从左到右
&& 从左到右
II 从左到右
?: 从右到左
=、*=、/=、%=、+=、-=、&=、^=、!= 从右到左
, 从左到右
if(条件表达式){
//执行代码
}
//双开分支
if(){
}else{
}
///多分支
if(){
}else if(){
}else{
}
如果条件表达式结果为真,则返回表达式1,的值,否则返回表达式2的值
条件表达式 ? 表达式1 : 表达式2
switch(表达式){
case value1:
// 执行语句1
break;
case value2:
// 执行语句2
break;
default:
// 如果无条件满足,最终执行语句
}
开发中表达式通常写为变量,变量值需要和 case 的 value 值全匹配,值和数据必须完全一致
Switch 与 IF 区别
for(初始化变量; 条件表达式; 操作表达式){
// 循环体
}
// 初始化变量: 用 var 声明的一个普通变量,通常用于计数器使用
// 条件表达式: 用来判断每一次循环是否继续执行,是终止的条件
// 操作表达式: 是每次循环最后执行的代码,经常用于计数器变量的更新(递增或递减)
for (外层循环初始化变量; 外层循环表条件达式; 外层操作表达式){
for(内层循环初始化变量; 内层循环表条件达式; 内层操作表达式){
// 循环代码
}
}
while(条件表达式){
// 循环体
}
// while 循环一般需要配一个计数器,然后再循环体内设置一个终止循环,否则会陷入死循环
do {
// 循环体
} while(条件表达式)
//和 while 循环比,do while 循环至少需要执行一次,然后进行判断是否终止循环。
在 Chrome 中 F12 进入调试模式,进入 Sources,在代码行数下断点,然后刷新则会进入到断点
数组可以把一组相关的数据一起存放,并提供方便的访问方式。
// 利用对象创建数组
var list= new Array();
// 利用 [] 快捷创建数组
var list= [];
var list = [1, 2, 3, 'Pink', True];
数组可以通过索引来访问、设置、修改对应的数组元素,可以通过 “数组名[索引]“ 的方式来获取数组中的元素。
var list= ['张三', '李四', '王五'];
// 索引号: 0 1 2
console.log(list); // 输出整个数组所有元素
console.log(list[0]); // 使用 数组名[索引号] 获取数组数组内指定元素的值
list= ['a', 'b', 'c', 'd'];
for (var i = 0; i <= 3; i++) {
console.log(list[i]);
}
arr= ['a', 'b', 'c', 'd'];
console.log(arr.length); // 输出4
var arr = [5, 4, 3, 2, 1];
for (var i = 0; i < arr.length - 1; i++) {
// 外层循环
for (var j = 0; j <= arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
// 声明函数
function 函数名(){
// 函数内部代码,又称为函数体
}
// 调用函数
函数名();
全局变量:
<script>
标签之内,或者是一个单独js文件局部变量:
变量声明在函数内部
函数的形参也可以看做是局部变量
函数执行完毕就会销毁
链式作用域:
var num = 10;
function fn(){
var num = 20;
function fun(){
console.log(num); // 链式作用域,找父集中的变量,如果没有再找上级
}
}
文章浏览阅读2.1k次,点赞4次,收藏4次。主要看《深入java虚拟机》这本书。 下面转自http://blog.csdn.net/zouxinfox/article/details/1594216 垃圾收集算法一个很大的缺点就是难以控制垃圾回收所占用的CPU时间,以及何时需要进行垃圾回收。火车算法是分代收集器所用的算法,目的是在成熟对象空间中提供限定时间的渐进收集。目前应用于SUN公司的Hotspot虚拟机_火车算法
文章浏览阅读2.7k次,点赞4次,收藏8次。RocketMQ消费端有两种获取消息的方式,Push方式和Pull方式。但这两种方式都有一定的缺陷,后来采用了一种折中的方法,采用”长轮询“的方式,它既可以拥有Pull的优点,又能达到保证实时性的目的。长轮询的思想:服务端接收到新消息请求后,如果队列里没有新消息,并不急于返回,通过一个循环不断查看状态,每次waitForRunning一段时间(默认是5秒),然后再Check。Broker默认最长阻塞时间为15秒,默认情况下当Broker一直没有新消息,第三次Check的时候,等待时间超过最长阻塞时间,就_rocketmq长轮询原理
文章浏览阅读1k次。转自:http://doc3.workerman.net/appendices/install-extension.html如何确定PHP安装了哪些扩展运行php -m会列出命令行 PHP CLI 已经安装的扩展,结果类似如下:~# php -m[PHP Modules]libeventposixpcntl...如何确定PHP的php.ini文件的位置当我们..._群晖 phpize
文章浏览阅读282次。题目链接:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=825&pid=1003题目如下:1003任何时候的纸条(最初的纸条或者剪下来后的部分)都不能前后翻转度度熊剪纸条 Accepts: 488 Submissions: 5471 Time Limit: 2000/1000 MS (J...
文章浏览阅读435次,点赞5次,收藏11次。计算机进制转换 以及进制的加减乘除等算术运算
文章浏览阅读1k次。外呼系统包括了外呼功能模块和管理功能模块,旨在帮助企业提升外呼效率、外呼任务管理规范性以及最终的销售转化效率。大多数企业在搭建电销团队的时候都知道应该注意提高效率,以让销售人均产出更高。其实影响人均的产出的因素有很多,如果你是电销团队的负责人,要为呼叫中心选型 ,想知道外呼系统哪家公司做得好,都有哪些优势?那么这篇文章正好可以帮到你。一、外呼功能模块其一是自动外呼,自动外呼就是凭借系统对智能语音机器人的设置,批量对外呼叫客户号码,一边自动筛选客户号码、将拨打情况分类记录,清晰明确,便于跟进,一边将接通的_电销团队用的什么电销系统
文章浏览阅读1.4k次。资源准备cgal安装包:https://www.cgal.org/download/windows.html或者github上的cgal:https://github.com/CGAL/cgal(如果用这个的话,还是需要安装cgal,因为这个项目依赖的gmp的库在安装包里是直接编译好的)cmake安装包:https://cmake.org/boost库:https://dl.bi..._cgal库 c++
文章浏览阅读7w次,点赞59次,收藏419次。利用最近一次的营销活动的信息,分析什么对推销结果的影响最大,如何确定银行定期产品推销中最具价值的客户。_数据分析实例
文章浏览阅读8.1k次,点赞2次,收藏32次。[编程|100分] 字符串重排题目描述 给你一个原始字符串,根据该字符串内每个字符出现的次数,按照ASCII码递增顺序重新调整输出。【温馨提示】 (1).原始字符串中仅可能出现“数字”和“字母”; (2).请注意区分字母大小写。 输入描述: eeefgghhh 输出描述: efghegheh 示例1 输入 eeefgghhh 输出 efghegheh[编程|..._华为2018软件类实习笔试题
文章浏览阅读812次。1. 做过的工作比较有创意的地方或者亮点2020.01-2020.12 AIZOO 可视化机器学习平台项目介绍:实现用户自定义上传算法模型和数据资源,通过可视化界面拖拽组件构建模型,提交任务,使用 slurm 集群管理自动部署模型训练,查看训练结果以及分析图表等的一站式机器学习平台。负责内容:(1) 前端开发:采用 Vue 框架+iview 组件库,基于 WebSocket 即时通讯和 Echarts 图表库绘制 动态折线图,通过 API 接口与 Java 后台交互。(2) 可视化构建模型:使用_前端面试准备什么项目好
文章浏览阅读53次。该改进主要是在麻雀搜索后,利用萤火虫扰动对麻雀进行萤火虫扰动,将所有麻雀与最优麻雀利用萤火虫扰动方式,进行位置更新,提高其搜索性,扰动后的麻雀与扰动前的麻雀进行对比,如果更优则更新麻雀位置。鲁棒性高:采用多个麻雀个体进行搜索,并通过更新机制保持种群的多样性,使得算法具有较好的鲁棒性,对初始解的依赖度低,更适应不同类型的问题。易于实现和调节:麻雀搜索算法相对简单,易于实现和调节参数,无需复杂的运算和大量的计算资源,适用于中小规模问题的求解。群智能算法改进:基于萤火虫改进的麻雀算法。
文章浏览阅读7.7k次。当公共平台,我们需要实时监控各个业务系统对公共平台的调用情况时,可以在代码中自定义prometheus监控指标。如下图中,维度使用tags来标记,我定义了两个维度,一个是关联系统的id: syskey 。一个是访问的表 tablename。我需要按关联系统对每个表的调用情况统计: private void addCountMetric(String tableName) { Optional<String> opt = SecurityUtils.getCurr.._prometheus 接口访问次数