JavaScript 介绍

javascript 是运行在浏览器端的脚本语言,javascript 主要解决的是前端与用户交互的问题,包括使用交互 和 数据交互,javascript 是浏览器解释执行的

前端三大块:

  1. HTML:页面结构
  2. CSS:页面表现:元素大小、颜色、位置、隐藏或显示、部分动画效果
  3. 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 种基本数据类型:

  1. number
  2. string
  3. boolean
  4. undefined    (变量声明未初始化,它的值就是 undefined)
  5. null    (表示空对象,如果定义的变量准备保存对象,可以将变量初始化为 null,在页面上获取不到对象,返回的值就是 null)

1 种复合类型:

  object

语句块

javascript 语句开始可缩进也可不缩进,缩进是为了排版,方便阅读;一条语句的结尾应该以 ";" 结尾

var iNum = 123;
var sTr = "hello world"; function fnAlert(){
alert(sTr)
}; fnAlert();

注释

//单行注释
var iNum = 123; /*
多行注释
。。。
。。。
*/

变量、函数、属性命名规范

  1. 区分大小写
  2. 第一个字符必须是字母、下划线(_)或者美元符号($)
  3. 其它字符可以是字母、下划线、美元符或数字

匈牙利命名风格:

  • 对象 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 关键字的作用:

  1. 返回函数中的值或者对象
  2. 结束函数的运行

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 中的写法:

  1. html 的属性和 js 里面的属性写法一样
  2. class 属性写成 className
  3. 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 入门与进阶的更多相关文章

  1. 全面解读JavaScript入门到进阶,100%基础知识掌握!

    一.JavaScript 简介 1.JavaScript 是 Web 的编程语言,是前端开发必须掌握的三门语言之一,即: HTML   定义了网页的内容 CSS      描述了网页的布局 JavaS ...

  2. javascript入门进阶(一)

    javascript 入门进阶 这里主要讲解一下在入门阶段很难注意的一些知识点,不一定有用.但是会了总比不会强. 1.HTML为<script>标签准备的6个属性: -async:可选.表 ...

  3. JavaScript入门篇 编程练习

    编程挑战 一.定义"改变颜色"的函数 提示: obj.style.color obj.style.backgroundColor 二.定义"改变宽高"的函数 提 ...

  4. 慕课网JavaScript入门篇课程笔记

    1.js注释很重要 单行注释,在注释内容前加符号 “//”. <script type="text/javascript"> document.write(" ...

  5. JavaScript学习笔记 - 进阶篇(1)- JS基础语法

    前言 JavaScript能做什么? 1.增强页面动态效果(如:下拉菜单.图片轮播.信息滚动等) 2.实现页面与用户之间的实时.动态交互(如:用户注册.登陆验证等) JS进阶篇学习什么? 在JavaS ...

  6. JavaScript入门篇

    记录一下在慕课网学习JavaScript的过程. 以下内容均来自慕课网. 传送:https://www.imooc.com/code/401 为什么学习JavaScript 1. 所有主流浏览器都支持 ...

  7. Python-WEB前端-入门到进阶开发之路

    HTTP: Python-HTTP 概况 HTML: Python-HTML基础 Python-form表单标签 Python-HTML CSS 练习 CSS: Python-CSS入门 Python ...

  8. 《AngularJS入门与进阶》图书简介

    一.图书封面 二.图书CIP信息 图书在版编目(CIP)数据 AngularJS入门与进阶 / 江荣波著. – 北京 : 清华大学出版社, 2017 ISBN 978-7-302-46074-9 Ⅰ. ...

  9. 《SEO教程:搜索引擎优化入门与进阶(第3版)》

    <SEO教程:搜索引擎优化入门与进阶(第3版)> 基本信息 作者: 吴泽欣 丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115357014 上架时间:2014-7-1 出 ...

随机推荐

  1. MacOS 安装配置 Laravel

    简单介绍: Laravel是一个用PHP编写的免费开源Web框架.它是由Taylor Otwell创作的,遵循MVC开发方法. 截至2015年3月,Laravel被认为是最流行的基于PHP的框架之一. ...

  2. shell编程系列17--文本处理三剑客之awk动作中的表达式用法

    shell编程系列17--文本处理三剑客之awk动作中的表达式用法 awk动作表达式中的算数运算符 awk动作中的表达式用法总结: 运算符 含义 + 加 - 减 * 乘 / 除 % 模 ^或** 乘方 ...

  3. ISO/IEC 9899:2011 条款6.5.10——按位与操作符

    6.5.10 按位与操作符 语法 1.AND-expression: equality-expression AND-expression    equality-expression 约束 2.这些 ...

  4. python获取风和天气城市数据 ID

    import requestsurl='https://cdn.heweather.com/china-city-list.csv'strhtml=requests.get(url)strhtml.e ...

  5. xcopy命令拷贝文件夹和文件

    文件夹: xcopy /r /y 'c:123\' 'D:\123\' 文件: echo f | xcopy  /d /r /k  c:\index2.htm c:\index.htm

  6. 了解美杜莎(Medusa)

    (1).美杜莎介绍 Medusa(美杜莎)是一个速度快,支持大规模并行,模块化的暴力破解工具.可以同时对多个主机,用户或密码执行强力测试.Medusa和hydra一样,同样属于在线密码破解工具.Med ...

  7. Mathjax与LaTex公式简介

    MathJax与LaTex公式简介 (转载) PS: 原文链接写的非常好!!! 博主写这篇文章,一是为了防止原链接失效,二是在cnblogs上测试MathJax; 本文从math.stackexcha ...

  8. 迅速生成项目-react-scripts

    推荐指数:

  9. Egg.js中使用sequelize事务

    对数据库的操作很多时候需要同时进行几个操作,比如需要同时改动几张表的数据,或者对同一张表中不同行(row)或列(column)做不同操作,比较典型的例子就是用户转账问题(A账户向B账号汇钱): 1 从 ...

  10. Docker 安装运行MSSQL Server

    1.镜像主页 https://hub.docker.com/_/microsoft-mssql-server 2.拉取2017最新版 docker pull mcr.microsoft.com/mss ...