JavaScript 入门与进阶
JavaScript 介绍
javascript 是运行在浏览器端的脚本语言,javascript 主要解决的是前端与用户交互的问题,包括使用交互 和 数据交互,javascript 是浏览器解释执行的
前端三大块:
- HTML:页面结构
- CSS:页面表现:元素大小、颜色、位置、隐藏或显示、部分动画效果
- JavaScript:页面行为:部分动画效果、页面与用户的交互、页面功能
javascript 嵌入页面的方式
1)行间事件(主要用于事件)
<input type="button" value="OK" onclick="alert('ok!');">
2)页面 script 标签嵌入
<script type="text/javascript">
alert("ok!");
</script>
3)外部引入(推荐使用)
<script type="text/javascript" src="../jquery/jquery.js"></script>
嵌入页面时需注意
如果把 javascript 写到元素的上面,就会报错,因为页面是从上往下加载执行的,看下面的例子,js 去页面上获取元素 div1 的时候,元素 div1 还没有加载:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
var oDiv = document.getElementById('div1');
alert(oDiv)
</script>
</head>
<body>
<div id="div1">div tag</div>
</body>
</html>
解决方法有两种:
1)理论上来说js标签放在html文档的任何位置都可以,规范起见,推荐放到body结束标签的末尾,包含到body标签内:
这样处理的好处是无需担心因页面未完成加载,造成DOM节点获取不到,使脚本报错的问题,而且能避免因脚本运行缓慢造成页面卡死的问题。另外,Yahoo的前端优化指南里就有这一条
<body>
<!-- 这里是其他的HTML标签 -->
<script> // 这里是代码 </script>
</body>
2)将javascript语句放到window.onload触发的函数里面,获取元素的语句会在页面加载完后才执行,就不会出错了:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
window.onload = function (){
var oDiv = document.getElementById('div1');
alert(oDiv)
}
</script>
</head>
<body>
<div id="div1">div tag</div>
</body>
</html>
变量、数据类型及基本语法规范
javascript 是一种弱类型语言,变量类型由它的值来决定,定义变量需要用关键字 var
var iNum = 123;
var sTr = "hello"; //同时定义多个变量可以用","隔开,共用一个 var 关键字
var iNum = 45, sTr = "world", sCount="68";
变量类型(共6种)
5 种基本数据类型:
- number
- string
- boolean
- undefined (变量声明未初始化,它的值就是 undefined)
- null (表示空对象,如果定义的变量准备保存对象,可以将变量初始化为 null,在页面上获取不到对象,返回的值就是 null)
1 种复合类型:
object
语句块
javascript 语句开始可缩进也可不缩进,缩进是为了排版,方便阅读;一条语句的结尾应该以 ";" 结尾
var iNum = 123;
var sTr = "hello world"; function fnAlert(){
alert(sTr)
}; fnAlert();
注释
//单行注释
var iNum = 123; /*
多行注释
。。。
。。。
*/
变量、函数、属性命名规范
- 区分大小写
- 第一个字符必须是字母、下划线(_)或者美元符号($)
- 其它字符可以是字母、下划线、美元符或数字
匈牙利命名风格:
- 对象 o (Object):oDiv
- 数组 a (Array):altems
- 字符串 s (String):sUserName
- 整数 i (Integer):iltemCount
- 布尔值 b (Boolean):blsComplete
- 浮点数 f (Float):fPrice
- 函数 fn (Function):fnHandler
- 正则表达式 re (RegExp):reEmailCheck
函数
函数就是重复执行的代码块
函数的定义和执行
//函数定义
function fnAlert(){
alert("hello world")
} // 函数执行
fnAlert();
变量和函数的预解析
javascript 解析过程分为两个阶段,先是编译阶段,然后执行阶段,在编译阶段会将 function 定义的函数提前,并且将 var 定义的变量声明提前,将它赋值为undefined
fnAlert(); //弹出 hello world
alert(iNum); //弹出 undefined function fnAlert(){
alert("hello world")
} var iNum = 123;
函数中传递参数
//接收参数时不需要指明参数的类型
function fnAlert(sTr) {
alert(sTr)
} fnAlert("hello world");
函数 return 关键字
return 关键字的作用:
- 返回函数中的值或者对象
- 结束函数的运行
demo:
function fnAdd(iNum1, iNum2) {
var iRs = iNum1 + iNum2
return iRs
alert("here!")
} var iCount = fnAdd(2,4);
alert(iCount); //弹出 7
条件语句
通过条件来控制程序的走向,就需要用到条件语句
条件运算符
==、===、>、>=、<、<=、!=、&&(与)、||(或)、!(非)
demo(比较两个数字的大小):
var iNum01 = 1, iNum02 = 2;
var sTr; if (iNum01 > iNum02) {
sTr = "greater than"
}
else if (iNum01 < iNum02){
sTr = "less than"
}
else {
sTr = "equality"
}
alert(sTr);
获取元素方法
可以使用内置对象 document 上个 getElementById() 方法来获取页面上设置的 id 属性的元素,取到的是一个 html 对象,然后将它赋值给一个变量,如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
var oDiv = document.getElementById('div1');
alert(oDiv)
</script>
</head>
<body>
<div id="div1">div tag</div>
</body>
</html>
操作元素属性
获取了页面元素,就可以对页面的属性进行操作,属性的操作包括属性的读和写
操作元素属性:
- 读取:var 变量 = 元素.属性名
- 修改:元素.属性名 = 新属性值
属性名在 js 中的写法:
- html 的属性和 js 里面的属性写法一样
- class 属性写成 className
- style 属性里面的属性,有横线(-)的改成驼峰式,比如:font-size 改成 style.fontSize
demo:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<input type="text" name="50px" value="请输入搜索内容" id="input01">
<a href="http://www.baidu.com" id="link01">百度一下</a>
<script type="text/javascript">
//通过id获取两个标签元素对象
var oInput = document.getElementById("input01");
var oA = document.getElementById("link01"); //读取oInput元素属性值
var sValue = oInput.value;
var sType = oInput.type;
var sName = oInput.name; // 读取 oA 元素属性值
var sLinks = oA.href; //设置(修改)属性
oA.style.color = "red";
oA.style.fontSize = sName;
</script>
</body>
</html>
innerHTML 属性
innerHTML 可以读取或者写入标签包裹的内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="div01">div tag</div>
<script type="text/javascript">
//获取标签元素
var oDiv = document.getElementById('div01'); //读取
var sTxt = oDiv.innerHTML;
alert(sTxt);
//写入标签元素
oDiv.innerHTML = "<a href='http://www.baidu.com'>百度一下</a>";
</script>
</body>
</html>
事件属性
元素上除了有样式,id 等属性之外,还有事件属性,常用的事件属性有鼠标点击事件(onclick),鼠标移入事件(mouseover),鼠标移出事件(mouseout)
将函数名称赋值给元素事件属性,可以将事件和函数关联起来
demo:
var oBtn = document.getElementById("btn1");
oBtn.onclick = myAlert;
function myAlert(){
alert("hello world");
}
匿名函数
定义函数可以不取名称,这个叫做匿名函数,可以将匿名函数直接赋值给元素的事件属性来完成事件和函数的关联
这样可以减少函数命名,并且简化代码,函数如果作为公共函数,就可以写成匿名函数的形式
demo:
var oBtn = document.getElementById('btn1'); /*
oBtn.onclick = myalert;
function myalert(){
alert("hello world");
}
*/ // 直接将匿名函数赋值给绑定的事件
oBtn.onclick = function (){
alert('hello world222');
};
综合案例
网页换肤:
html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>09document</title>
<link rel="stylesheet" href="./css/skin01.css" id="link01">
<script>
window.onload = function () {
var oLink = document.getElementById('link01');
var oBtn01 = document.getElementById('btn01');
var oBtn02 = document.getElementById('btn02'); oBtn01.onclick = function () {
oLink.href = "./css/skin01.css"
}; oBtn02.onclick = function () {
oLink.href = "./css/skin02.css"
}; } </script>
</head>
<body>
<h3>网页标题</h3>
<input type="button" value="主题一" id="btn01">
<input type="button" value="主题二" id="btn02">
</body>
</html>
css1:
/*设置网页的背景色*/
body{
background: green;
} input{
width: 200px;
height: 50px;
background: pink;
border: 0px;
/*设置圆角*/
/*border-radius: 25px;*/
font-size: 20px; }
css2:
/*设置网页的背景色*/
body{
background: blue;
} input{
width: 200px;
height: 50px;
background: purple;
border: 0px;
/*设置圆角*/
/*border-radius: 25px;*/
font-size: 20px; }
ending ~
JavaScript 入门与进阶的更多相关文章
- 全面解读JavaScript入门到进阶,100%基础知识掌握!
一.JavaScript 简介 1.JavaScript 是 Web 的编程语言,是前端开发必须掌握的三门语言之一,即: HTML 定义了网页的内容 CSS 描述了网页的布局 JavaS ...
- javascript入门进阶(一)
javascript 入门进阶 这里主要讲解一下在入门阶段很难注意的一些知识点,不一定有用.但是会了总比不会强. 1.HTML为<script>标签准备的6个属性: -async:可选.表 ...
- JavaScript入门篇 编程练习
编程挑战 一.定义"改变颜色"的函数 提示: obj.style.color obj.style.backgroundColor 二.定义"改变宽高"的函数 提 ...
- 慕课网JavaScript入门篇课程笔记
1.js注释很重要 单行注释,在注释内容前加符号 “//”. <script type="text/javascript"> document.write(" ...
- JavaScript学习笔记 - 进阶篇(1)- JS基础语法
前言 JavaScript能做什么? 1.增强页面动态效果(如:下拉菜单.图片轮播.信息滚动等) 2.实现页面与用户之间的实时.动态交互(如:用户注册.登陆验证等) JS进阶篇学习什么? 在JavaS ...
- JavaScript入门篇
记录一下在慕课网学习JavaScript的过程. 以下内容均来自慕课网. 传送:https://www.imooc.com/code/401 为什么学习JavaScript 1. 所有主流浏览器都支持 ...
- Python-WEB前端-入门到进阶开发之路
HTTP: Python-HTTP 概况 HTML: Python-HTML基础 Python-form表单标签 Python-HTML CSS 练习 CSS: Python-CSS入门 Python ...
- 《AngularJS入门与进阶》图书简介
一.图书封面 二.图书CIP信息 图书在版编目(CIP)数据 AngularJS入门与进阶 / 江荣波著. – 北京 : 清华大学出版社, 2017 ISBN 978-7-302-46074-9 Ⅰ. ...
- 《SEO教程:搜索引擎优化入门与进阶(第3版)》
<SEO教程:搜索引擎优化入门与进阶(第3版)> 基本信息 作者: 吴泽欣 丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115357014 上架时间:2014-7-1 出 ...
随机推荐
- Visual Studio 2019更新到16.2.1
Visual Studio 2019更新到16.2.1 此次更新,包含以下修改: (1)支持Xcode 10.3. (2)修复了Forms项目中,预览Android界面效果bug. (3)修复am ...
- Kotlin集合——Set集合
Kotlin集合——Set集合 转 https://www.jianshu.com/p/3c95d7729d69 Kotlin的集合类由两个接口派生:Collection和Map. Kotlin的 ...
- PHP过狗webshell编写过程
0x1 先上图: 0x2 编写过程 这里必须强调一下我内心的感觉,小阔爱前两天也研究了过狗的一句话了,然后我突然觉得大家都在进步,我研究点啥呢?不如也试试以前因为觉得自己不懂代码,而不会研究的免杀sh ...
- angular ts处理日期格式
引入DatePipe import {DatePipe} from '@angular/common'; 添加provider @Component({ providers: [DatePipe] } ...
- python接入微博第三方API之1环境准备
环境准备: 1.注册微博账号 2.注册应用
- Python3基础 函数 参数 多个参数都有缺省值,需要指定参数进行赋值
Python : 3.7.3 OS : Ubuntu 18.04.2 LTS IDE : pycharm-community-2019.1.3 ...
- 泡泡一分钟:Aided Inertial Navigation: Unified Feature Representations and Observability Analysis
http://udel.edu/~yuyang/downloads/tr_observabilityII.pdf Aided Inertial Navigation: Unified Feature R ...
- 【PHP】 php遍历文件夹文件,获取md5的值
方法: <?php //定义操作目录 $dir = 'D:\phpstudy\WWW\test'; function getDir2($dir) { foreach (glob($dir . ' ...
- pytorch 中Dataloader中的collate_fn参数
一般的,默认的collate_fn函数是要求一个batch中的图片都具有相同size(因为要做stack操作),当一个batch中的图片大小都不同时,可以使用自定义的collate_fn函数,则一个b ...
- php mkdir没有权限不能创建成功的问题
php用mkdir创建目录时,必须保证要创建的目录的父级目录有用户权限才行, 比如当前执行脚本的用户是www用户,要创建的目录是/data/www/bbs/attach/2018 则/data/www ...