SlideShare a Scribd company logo
Chapter 3
  JavaScript 初探
—— 程序员与设计师的双重眼光
什么是我们需要的?
      基于 js 的 Lightbox 插件可以点击图片后弹出覆盖层进行浏览




去试试
什么是我们需要的?




    照片的倒影效果和阴影效果
什么是我们需要的?




      实现网页上绘制 3d 图形




去试试
成为 Web 专家


            头脑风暴:
            Web 开发者 / 浏览器厂
            商
            如何实现动态?
成为 Web 专家
JavaScript 简史
• 突破 HyperText :网景和 Sun 公司联合推
  出 JavaScript

• 欧洲计算机制造商协会标准化:
  ECMAscript

• W3C 使 DOM 标准化,解决浏览器间冲突
JavaScript 简史
• DOM: 一个与系统平台和编程语言无关的
  接口,程序脚本可以通过这个接口动态地访
  问和修改文档内容、结构和样式。

• 标准化 DOM 语法:
  var xpos =
 document.getElementById('myelement').style.left

              getElementById
              getElementByTagName
              getElementByClassName
准备工作
<!DOCTYPE html >             <!DOCTYPE html>
<html lang="en">             <html lang="en">
<head>                       <head>
   <meta charset="utf-8"/>      <meta charset="utf-8"/>
   <title>Example</title>       <title>Example</title>
   <script>                  </head>
         JavaScript          <body>
   </script>                    Content
</head>                         <script src="file.js"></script>
                             </body>
<body>                       </html>
   Content
</body>
</html>

  javascript 嵌入 HTML 文档中      javascript 有单独的 .js 文档
准备工作
<!DOCTYPE html >
<html lang="en">
<head>
  <meta charset="utf-8"/>    JavaScript 版 Hello World
  <title>Example</title>     复制左边的代码到 EmEditor
  <script>                   保存为 html 文件后查看效果
       alert("Hello World!
  ");
  </script>
</head>

<body>
  <p>Content</p>
</body>
</html>
没有傻问题

<script> 标签是否一定要包含 type="text/javascript" 属性?

    答:不一定, HTML 脚本默认类型就是 javascript

                                    javascript 代码放在最后
可以在 <head> 中包含 js 文件吗?              会被延迟执行吗         去试试

    答:可以,但是最好的做法是把 <script> 标签放在 HTML 文档的最后,
    </body> 标签之前。


javascript 语言需要编译才能执行吗?

    答: javascript 是解释型语言,他需要浏览器中的解释器读入源码并执行。
JavaScript 语法
语句
first statement;
second statement;

注释
// 普通注释
/* 多行的
                          <!— 、— !> 颜色为什么不一样?
      注释 */
<!— — JavaScript 的 HTML 风格注释,不推荐 — —
  !>
JavaScript 语法
变量
var mood = "happy";



var mood; mood = "happy";

数据类型
弱类型:程序员可以在任何阶段改变变量的数据类型
JavaScript 语法
数组
var beatles = Array(4);
beatles[0] = "John";
beatles[1] = "Paul";
beatles[2] = "George";
beatles[3] = "Ringo";

var beatles = Array( "John", "Paul",
  "George", "Ringo" );
JavaScript 语法
关联数组
var lennon = Array();
lennon["name"] = "John";
lennon["year"] = 1940;
lennon["living"] = false;



          使用关联数组增加了代码可读性,
          实质上是创建了 Array 对象的属性
JavaScript 语法
对象
var lennon = Object();
lennon.name = "John";
lennon.year = 1940;
lennon.living = false;

拼接操作
var year = 2005;
var message = "The year is " + year;
JavaScript 语法
拼接操作

去试试:
比较 alert ("10" + 20);
和  alert (10 + 20);
的执行结果
JavaScript 语法
条件语句
if (1 > 2) {
alert("The world has gone mad!");
} else {
alert("All is well with the world");
}
JavaScript 语法
循环语句
var count = 1;
do {
alert (count);
count++;
} while (count < 11);

var beatles = Array("John","Paul","George","Ringo");
for (var count = 0 ; count < beatles.length; count+
  + ) {
      alert(beatles[count]);
  }
JavaScript 语法
var beatles =
  Array("John","Paul","George",
  "Ringo");
for (var count = 0 ; count <
  beatles.length; count++ ) {
       alert(beatles[count]);
  }
                                   上下两部分语句
                                   执行结构有何不同?
var beatles =
   Array("John","Paul","George",
   "Ringo");

  alert(beatles);
JavaScript 语法
函数
function shout() {
var beatles =
  Array("John","Paul","George","Ringo"
  );
for (var count = 0 ; count <
  beatles.length; count++ ) {
     alert(beatles[count]);
     }
}
JavaScript 语法
对象
Person.mood
Person.walk

JS 内建对象
     var beatles = new Array();
宿主对象
     浏览器、主机等运行环境决定(如
  document )
DOM
• Document Object Model
DOM
• 节点:
 – 元素节点
 – 文本节点
 – 属性节点


• CSS
    回顾……   美化示例 2
DOM
• ID 获取元素
                      typeof 报告所选择的对象类型


alert(typeof
  document.getElementById("purchases")
  );

在 index.html 中选择 ID 为 purchases 的元素
P.S. 把上面的语句加入到代码中
去试试
DOM
• tag 获取元素
                      typeof 报告所选择的对象类型

var items =
  document.getElementsByTagName("li");
for (var i=0; i < items.length; i++) {
alert(typeof items[i]);
}

在 index.html 中选择 ID 为 purchases 的元素
去试试
DOM
• class 获取元素

var shopping =
  document.getElementById("purchases")
  ;
var sales =
  shopping.getElementsByClassName("sal
  e");
DOM
• 获取和设置属性
通过刚才的 getElementBy... ,获取了的元素
  可以使用
      getAttribute
      setAttribute
  来获取和设置元素的属性
DOM
getAttribute

var paras = document.getElementsByTagName("p");
for (var i=0; i< paras.length; i++) {
  var title_text = paras[i].getAttribute("title");
  if (title_text != null) {
      alert(title_text);
  }
}

如果获得的 title 属性非空,则弹出 alert 对话框
DOM
setAttribute

var shopping = document.getElementById("purchases");
alert(shopping.getAttribute("title"));
shopping.setAttribute("title","a list of goods");
alert(shopping.getAttribute("title"));




P.S. 把上面的语句加入到示例 2 代码中
DOM

setAttribute 改变了元素的属性!




                     ???
                     这样的话 HTML 文档是否被修改了?
小结
• JavaScript 是实现动态效果的一种途径

• 松散语法规则让你可以专注于效果本身

• DOM 可以使页面内容与 JavaScript 交互


       示例:简单实现图片轮播功能
Ad

Recommended

ODP
Js dom
lidashuang
 
PDF
Browser Object Model
jay li
 
PPTX
Inside the-browser
jy03845581
 
PDF
Js doc toolkit
jay li
 
PDF
JavaScript Engine
jay li
 
PPT
J Query简介及入门指南
AppZ
 
PPTX
前端调试工具使用指南
gm163com
 
PDF
Html&css基础
KenerLinfeng
 
PPT
Css性能优化
linxz
 
PPTX
布局原理
enmaai
 
PPT
Mybatis学习培训
flynofry
 
PPTX
给聚划算后端开发的前端培训
j5726
 
PDF
Html5form
jay li
 
DOC
淘宝网前端开发面试题
Lumend
 
PPTX
網頁三本柱之Html與css
Aaron King
 
PPT
Kindeditor 设计思路
luolonghao
 
PDF
编辑器设计Kissy editor
taobao.com
 
PDF
CSS 入門 - 前端工程開發實務訓練
Joseph Chiang
 
PDF
AJAX Basic
Ryan Chung
 
PPTX
Node js feat pegasus
cnfi
 
PPTX
第三方内容开发最佳实践
taobao.com
 
PPTX
前端 JavaScript 相关的小Tips
blank zheng
 
PPTX
JavaScript 80+ Programming and Optimization Skills
Ho Kim
 
PDF
TypeScript-twmvc#16
twMVC
 
PDF
HTML 入門 - 前端工程開發實務訓練
Joseph Chiang
 
PDF
Javascript primer plus
Dongxu Yao
 
PDF
KISSY for starter
yiming he
 
PDF
PresCare Annual Report 2012-13
James Woods
 
PDF
Women-and-Men-Morality-and-Ethics
Mut Somoeun
 
DOC
T3tra andres blanco
Andres Blanco
 

More Related Content

What's hot (19)

PPT
Css性能优化
linxz
 
PPTX
布局原理
enmaai
 
PPT
Mybatis学习培训
flynofry
 
PPTX
给聚划算后端开发的前端培训
j5726
 
PDF
Html5form
jay li
 
DOC
淘宝网前端开发面试题
Lumend
 
PPTX
網頁三本柱之Html與css
Aaron King
 
PPT
Kindeditor 设计思路
luolonghao
 
PDF
编辑器设计Kissy editor
taobao.com
 
PDF
CSS 入門 - 前端工程開發實務訓練
Joseph Chiang
 
PDF
AJAX Basic
Ryan Chung
 
PPTX
Node js feat pegasus
cnfi
 
PPTX
第三方内容开发最佳实践
taobao.com
 
PPTX
前端 JavaScript 相关的小Tips
blank zheng
 
PPTX
JavaScript 80+ Programming and Optimization Skills
Ho Kim
 
PDF
TypeScript-twmvc#16
twMVC
 
PDF
HTML 入門 - 前端工程開發實務訓練
Joseph Chiang
 
PDF
Javascript primer plus
Dongxu Yao
 
PDF
KISSY for starter
yiming he
 
Css性能优化
linxz
 
布局原理
enmaai
 
Mybatis学习培训
flynofry
 
给聚划算后端开发的前端培训
j5726
 
Html5form
jay li
 
淘宝网前端开发面试题
Lumend
 
網頁三本柱之Html與css
Aaron King
 
Kindeditor 设计思路
luolonghao
 
编辑器设计Kissy editor
taobao.com
 
CSS 入門 - 前端工程開發實務訓練
Joseph Chiang
 
AJAX Basic
Ryan Chung
 
Node js feat pegasus
cnfi
 
第三方内容开发最佳实践
taobao.com
 
前端 JavaScript 相关的小Tips
blank zheng
 
JavaScript 80+ Programming and Optimization Skills
Ho Kim
 
TypeScript-twmvc#16
twMVC
 
HTML 入門 - 前端工程開發實務訓練
Joseph Chiang
 
Javascript primer plus
Dongxu Yao
 
KISSY for starter
yiming he
 

Viewers also liked (20)

PDF
PresCare Annual Report 2012-13
James Woods
 
PDF
Women-and-Men-Morality-and-Ethics
Mut Somoeun
 
DOC
T3tra andres blanco
Andres Blanco
 
PDF
How I started 3d printing and what I use it for
Willem Van den Eynde
 
PPTX
Diapositivas
sanchesmenjivark
 
PPTX
First grade ocean research
Mari McCuen
 
PPTX
Actualog для Ленэнерго
Actualog
 
PDF
European legal issues for US enterprise
Rob Blamires
 
PPTX
Afectación a vivienda
Marcela Tranchini
 
PDF
CliqTags - Access Methods for Mobile Marketing
CliqTags
 
PDF
SSS Sanatracin RTU MSDS
esalozzo
 
PDF
Feb 2010 Newsletter
mjcunny
 
PPT
GSPOA World Health Summit Workshop, Usman
Usman Mushtaq
 
DOC
Program gemilang 7 (1)
Butter Emily
 
PPTX
Rock Alternativo
Pablo Andrés Martinez
 
PDF
Practia de laboratorio origen del universo
joshman valarezo
 
PDF
J groll ignite the culture cocktail party 0613
jgroll06
 
PPTX
Poverty - G1
Bernard Sng
 
PDF
The blink Style
Daniel Ruke
 
DOCX
Packet tracer dh
felix eduardo urquijo bayona
 
PresCare Annual Report 2012-13
James Woods
 
Women-and-Men-Morality-and-Ethics
Mut Somoeun
 
T3tra andres blanco
Andres Blanco
 
How I started 3d printing and what I use it for
Willem Van den Eynde
 
Diapositivas
sanchesmenjivark
 
First grade ocean research
Mari McCuen
 
Actualog для Ленэнерго
Actualog
 
European legal issues for US enterprise
Rob Blamires
 
Afectación a vivienda
Marcela Tranchini
 
CliqTags - Access Methods for Mobile Marketing
CliqTags
 
SSS Sanatracin RTU MSDS
esalozzo
 
Feb 2010 Newsletter
mjcunny
 
GSPOA World Health Summit Workshop, Usman
Usman Mushtaq
 
Program gemilang 7 (1)
Butter Emily
 
Rock Alternativo
Pablo Andrés Martinez
 
Practia de laboratorio origen del universo
joshman valarezo
 
J groll ignite the culture cocktail party 0613
jgroll06
 
Poverty - G1
Bernard Sng
 
The blink Style
Daniel Ruke
 
Ad

Similar to Web设计 3 java_script初探(程序员与设计师的双重眼光) (20)

PPTX
Inside the-browser
jy03845581
 
PPTX
[2008]网站重构 -who am i
Twinsen Liang
 
PPT
J Query Learn
guestfb42fc
 
PPTX
Script with engine
Webrebuild
 
PPT
富文本编辑器在互联网上的应用
luolonghao
 
PPTX
前端開發學習簡介
peterju
 
PPT
Js培训
yiditushe
 
PDF
深入剖析浏览器
jay li
 
ODP
JavaScript Advanced Skill
firestoke
 
PPTX
浅析浏览器解析和渲染
Ailsa126
 
PPT
HTML & JavaScript
Sanji Zhang
 
PPTX
TBAD F2E 2010 review
leneli
 
PDF
网页制作基础
loo2k
 
PPTX
追风堂 Javascript
minipeach
 
PDF
Javascript
Ryan Chung
 
PDF
恶意网页分析实战
Huang Toby
 
PPTX
张所勇:前端开发工具推荐
zhangsuoyong
 
PDF
Javascript autoload
jay li
 
PDF
Web前端标准在各浏览器中的实现差异
cleverpig
 
PDF
Jquery指南
yiditushe
 
Inside the-browser
jy03845581
 
[2008]网站重构 -who am i
Twinsen Liang
 
J Query Learn
guestfb42fc
 
Script with engine
Webrebuild
 
富文本编辑器在互联网上的应用
luolonghao
 
前端開發學習簡介
peterju
 
Js培训
yiditushe
 
深入剖析浏览器
jay li
 
JavaScript Advanced Skill
firestoke
 
浅析浏览器解析和渲染
Ailsa126
 
HTML & JavaScript
Sanji Zhang
 
TBAD F2E 2010 review
leneli
 
网页制作基础
loo2k
 
追风堂 Javascript
minipeach
 
Javascript
Ryan Chung
 
恶意网页分析实战
Huang Toby
 
张所勇:前端开发工具推荐
zhangsuoyong
 
Javascript autoload
jay li
 
Web前端标准在各浏览器中的实现差异
cleverpig
 
Jquery指南
yiditushe
 
Ad

Web设计 3 java_script初探(程序员与设计师的双重眼光)

  • 1. Chapter 3 JavaScript 初探 —— 程序员与设计师的双重眼光
  • 2. 什么是我们需要的? 基于 js 的 Lightbox 插件可以点击图片后弹出覆盖层进行浏览 去试试
  • 3. 什么是我们需要的? 照片的倒影效果和阴影效果
  • 4. 什么是我们需要的? 实现网页上绘制 3d 图形 去试试
  • 5. 成为 Web 专家 头脑风暴: Web 开发者 / 浏览器厂 商 如何实现动态?
  • 7. JavaScript 简史 • 突破 HyperText :网景和 Sun 公司联合推 出 JavaScript • 欧洲计算机制造商协会标准化: ECMAscript • W3C 使 DOM 标准化,解决浏览器间冲突
  • 8. JavaScript 简史 • DOM: 一个与系统平台和编程语言无关的 接口,程序脚本可以通过这个接口动态地访 问和修改文档内容、结构和样式。 • 标准化 DOM 语法: var xpos = document.getElementById('myelement').style.left getElementById getElementByTagName getElementByClassName
  • 9. 准备工作 <!DOCTYPE html > <!DOCTYPE html> <html lang="en"> <html lang="en"> <head> <head> <meta charset="utf-8"/> <meta charset="utf-8"/> <title>Example</title> <title>Example</title> <script> </head> JavaScript <body> </script> Content </head> <script src="file.js"></script> </body> <body> </html> Content </body> </html> javascript 嵌入 HTML 文档中 javascript 有单独的 .js 文档
  • 10. 准备工作 <!DOCTYPE html > <html lang="en"> <head> <meta charset="utf-8"/> JavaScript 版 Hello World <title>Example</title> 复制左边的代码到 EmEditor <script> 保存为 html 文件后查看效果 alert("Hello World! "); </script> </head> <body> <p>Content</p> </body> </html>
  • 11. 没有傻问题 <script> 标签是否一定要包含 type="text/javascript" 属性? 答:不一定, HTML 脚本默认类型就是 javascript javascript 代码放在最后 可以在 <head> 中包含 js 文件吗? 会被延迟执行吗 去试试 答:可以,但是最好的做法是把 <script> 标签放在 HTML 文档的最后, </body> 标签之前。 javascript 语言需要编译才能执行吗? 答: javascript 是解释型语言,他需要浏览器中的解释器读入源码并执行。
  • 12. JavaScript 语法 语句 first statement; second statement; 注释 // 普通注释 /* 多行的 <!— 、— !> 颜色为什么不一样? 注释 */ <!— — JavaScript 的 HTML 风格注释,不推荐 — — !>
  • 13. JavaScript 语法 变量 var mood = "happy"; var mood; mood = "happy"; 数据类型 弱类型:程序员可以在任何阶段改变变量的数据类型
  • 14. JavaScript 语法 数组 var beatles = Array(4); beatles[0] = "John"; beatles[1] = "Paul"; beatles[2] = "George"; beatles[3] = "Ringo"; var beatles = Array( "John", "Paul", "George", "Ringo" );
  • 15. JavaScript 语法 关联数组 var lennon = Array(); lennon["name"] = "John"; lennon["year"] = 1940; lennon["living"] = false; 使用关联数组增加了代码可读性, 实质上是创建了 Array 对象的属性
  • 16. JavaScript 语法 对象 var lennon = Object(); lennon.name = "John"; lennon.year = 1940; lennon.living = false; 拼接操作 var year = 2005; var message = "The year is " + year;
  • 17. JavaScript 语法 拼接操作 去试试: 比较 alert ("10" + 20); 和 alert (10 + 20); 的执行结果
  • 18. JavaScript 语法 条件语句 if (1 > 2) { alert("The world has gone mad!"); } else { alert("All is well with the world"); }
  • 19. JavaScript 语法 循环语句 var count = 1; do { alert (count); count++; } while (count < 11); var beatles = Array("John","Paul","George","Ringo"); for (var count = 0 ; count < beatles.length; count+ + ) { alert(beatles[count]); }
  • 20. JavaScript 语法 var beatles = Array("John","Paul","George", "Ringo"); for (var count = 0 ; count < beatles.length; count++ ) { alert(beatles[count]); } 上下两部分语句 执行结构有何不同? var beatles = Array("John","Paul","George", "Ringo"); alert(beatles);
  • 21. JavaScript 语法 函数 function shout() { var beatles = Array("John","Paul","George","Ringo" ); for (var count = 0 ; count < beatles.length; count++ ) { alert(beatles[count]); } }
  • 22. JavaScript 语法 对象 Person.mood Person.walk JS 内建对象 var beatles = new Array(); 宿主对象 浏览器、主机等运行环境决定(如 document )
  • 24. DOM • 节点: – 元素节点 – 文本节点 – 属性节点 • CSS 回顾…… 美化示例 2
  • 25. DOM • ID 获取元素 typeof 报告所选择的对象类型 alert(typeof document.getElementById("purchases") ); 在 index.html 中选择 ID 为 purchases 的元素 P.S. 把上面的语句加入到代码中 去试试
  • 26. DOM • tag 获取元素 typeof 报告所选择的对象类型 var items = document.getElementsByTagName("li"); for (var i=0; i < items.length; i++) { alert(typeof items[i]); } 在 index.html 中选择 ID 为 purchases 的元素 去试试
  • 27. DOM • class 获取元素 var shopping = document.getElementById("purchases") ; var sales = shopping.getElementsByClassName("sal e");
  • 28. DOM • 获取和设置属性 通过刚才的 getElementBy... ,获取了的元素 可以使用 getAttribute setAttribute 来获取和设置元素的属性
  • 29. DOM getAttribute var paras = document.getElementsByTagName("p"); for (var i=0; i< paras.length; i++) { var title_text = paras[i].getAttribute("title"); if (title_text != null) { alert(title_text); } } 如果获得的 title 属性非空,则弹出 alert 对话框
  • 30. DOM setAttribute var shopping = document.getElementById("purchases"); alert(shopping.getAttribute("title")); shopping.setAttribute("title","a list of goods"); alert(shopping.getAttribute("title")); P.S. 把上面的语句加入到示例 2 代码中
  • 31. DOM setAttribute 改变了元素的属性! ??? 这样的话 HTML 文档是否被修改了?
  • 32. 小结 • JavaScript 是实现动态效果的一种途径 • 松散语法规则让你可以专注于效果本身 • DOM 可以使页面内容与 JavaScript 交互 示例:简单实现图片轮播功能