javascript tutorial

93
Handlino http://handlino.com/ Javascript Tutorial Kang-min Liu

Upload: kang-min-liu

Post on 09-Dec-2014

4.632 views

Category:

Technology


1 download

DESCRIPTION

The javascript tutorial talk for openfoundry

TRANSCRIPT

Page 1: Javascript Tutorial

Handlino http://handlino.com/

Javascript TutorialKang-min Liu

Page 2: Javascript Tutorial

Handlino http://handlino.com/

Tools

• Firefox 3

• Firebug

• “shell” and “test styles” bookmarklets

• https://www.squarefree.com/bookmarklets/webdevel.html( http://is.gd/45YH )

Page 3: Javascript Tutorial

Handlino http://handlino.com/

“Bread board”<html><body><script type="text/javascript">

// Code goes here...

</script></body></html>

Save it as “test.html”

http://gist.github.com/31863

Page 4: Javascript Tutorial

Handlino http://handlino.com/

Code

Page 5: Javascript Tutorial

Handlino http://handlino.com/

Hello World

alert("Hello World");

Page 6: Javascript Tutorial

Handlino http://handlino.com/

Hello, you

var nickname = "gugod";alert("Hello, " + nickname);

Page 7: Javascript Tutorial

Handlino http://handlino.com/

Hello, you

var nickname = "gugod";alert("Hello, " + nickname);注意

Page 8: Javascript Tutorial

Handlino http://handlino.com/

variables 變數

var nickname = "gugod";

Page 9: Javascript Tutorial

Handlino http://handlino.com/

variables 變數

variablename

var nickname = "gugod";

Page 10: Javascript Tutorial

Handlino http://handlino.com/

variables 變數

variablename

variable value

var nickname = "gugod";

Page 11: Javascript Tutorial

Handlino http://handlino.com/

variables 變數

variablename

variable value

var nickname = "gugod";

declare

Page 12: Javascript Tutorial

Handlino http://handlino.com/

variables 變數

var nickname = “gugod”;

Page 13: Javascript Tutorial

Handlino http://handlino.com/

variables 變數

var nickname = 610;

Page 14: Javascript Tutorial

Handlino http://handlino.com/

variables 變數

var nickname = x;

Page 15: Javascript Tutorial

Handlino http://handlino.com/

Simple Variable Values

var nickname = "gugod";var answer = 42;

alert(nickname);alert(answer);

Page 16: Javascript Tutorial

Handlino http://handlino.com/

Simple Variable Values

nickname = "gugod";answer = 42;

alert(nickname);alert(answer);

Page 17: Javascript Tutorial

Handlino http://handlino.com/

Simple Variable Values

nickname = "gugod";answer = 42;

alert(nickname);alert(answer);

貌似全域變數

Page 18: Javascript Tutorial

Handlino http://handlino.com/

變數領域var nickname = "gugod";function test1() { nickname = 610;}function test2() { nickname = 5566;}

Page 19: Javascript Tutorial

Handlino http://handlino.com/

變數領域var nickname = "gugod";function test1() { var nickname = 610;}function test1() { var nickname = 5566;}

Page 20: Javascript Tutorial

Handlino http://handlino.com/

全域變數

• 不是宣告在 function 裡面的

• 沒有事先宣告的

• 名稱為 “window.XXX” 型式的

Page 21: Javascript Tutorial

Handlino http://handlino.com/

全域變數var nickname = "gugod";function test1() { nickname = 610;}function test2() { nickname = 5566;}

Page 22: Javascript Tutorial

Handlino http://handlino.com/

全域變數var nickname = "gugod";function test1() { nickname = 610;}function test2() { nickname = 5566;}

全域變數

Page 23: Javascript Tutorial

Handlino http://handlino.com/

全域變數function test1() { nickname = 610;}function test2() { var n = window.nickname;}

610

Page 24: Javascript Tutorial

Handlino http://handlino.com/

if-else

if (<expression>) { ...}else { ...}

Page 25: Javascript Tutorial

Handlino http://handlino.com/

if-else

if (<expression>) { ...}

Page 26: Javascript Tutorial

Handlino http://handlino.com/

if-elseif (<expression>) { ...}else if (<expression>){ ...}else if (<expression>){ ...}else { ...}

Page 27: Javascript Tutorial

Handlino http://handlino.com/

Expressionsa == ba != ba >= ba <= ba > ba < ba && ba || ba

Page 28: Javascript Tutorial

Handlino http://handlino.com/

if-else

if (10 < a && a < 42) { ...}

Page 29: Javascript Tutorial

Handlino http://handlino.com/

if-else

// 10 < a < 42if (10 < a && a < 42) { ...}

Page 30: Javascript Tutorial

Handlino http://handlino.com/

if-else

// 10 < a < 42if (10 < a && a < 42) { ...}

程式碼註解

Page 31: Javascript Tutorial

Handlino http://handlino.com/

if-else// 10 < a < 42if (10 < a && a < 42) { ...}// 42 ~ 50else if (a >= 42 && a <= 50) { ...}// ? ~ 10else { ...}

Page 32: Javascript Tutorial

Handlino http://handlino.com/

Function函式

Page 33: Javascript Tutorial

Handlino http://handlino.com/

Function

function hello() { alert("hello");}

Page 34: Javascript Tutorial

Handlino http://handlino.com/

Function

var hello = function() { alert("hello");}

Page 35: Javascript Tutorial

Handlino http://handlino.com/

Function call

hello();

Page 36: Javascript Tutorial

Handlino http://handlino.com/

Function call

hello();

Page 37: Javascript Tutorial

Handlino http://handlino.com/

Function w/ Argument

function hello(x) { alert("hello " + x);}

Page 38: Javascript Tutorial

Handlino http://handlino.com/

Function call

hello("gugod");

Page 39: Javascript Tutorial

Handlino http://handlino.com/

Function call

hello("gugod");

Page 40: Javascript Tutorial

Handlino http://handlino.com/

Function call

hello(a);

Page 41: Javascript Tutorial

Handlino http://handlino.com/

var hello = function(nickname, like) { var message = "hello " + nickname;

if (like > 6) { message = "Great to see you, " + nickname; }

if (like < 2){ message = "Oh, it’s you, " + nickname; }

alert(message);}

Page 42: Javascript Tutorial

Handlino http://handlino.com/

Function 傳回值

function add3(a) { return a + 3;}

Page 43: Javascript Tutorial

Handlino http://handlino.com/

Function 傳回值

function add3(a) { return a + 3;}

Page 44: Javascript Tutorial

Handlino http://handlino.com/

Input

Page 45: Javascript Tutorial

Handlino http://handlino.com/

• Browser User Input

• prompt()

• DOM (HTML)

• Ajax

• iframe, XMLHttpRequest, JSONRequest, JSONP, ...

Page 46: Javascript Tutorial

Handlino http://handlino.com/

var a = prompt("Give me money:");

alert(a);

prompt

Page 47: Javascript Tutorial

Handlino http://handlino.com/

prompt

• Good

• Easy

• Built-in

• Bad

• No way to customize style

• One variable at a time

Page 48: Javascript Tutorial

Handlino http://handlino.com/

DOM<html><body><span id="nickname">gugod</span><script type="text/javascript">

// Code...

</script></body></html>

Page 49: Javascript Tutorial

Handlino http://handlino.com/

<html><body><span id="nickname">gugod</span><script type="text/javascript">

var nickname = document.getElementById("nickname") .childNodes[0] .nodeValue;

alert(nickname);

</script></body></html>

Page 50: Javascript Tutorial

Handlino http://handlino.com/

<html><body><span id="nickname">gugod</span><script type="text/javascript">

var nickname = document.getElementById("nickname") .childNodes[0] .nodeValue;

alert(nickname);

</script></body></html>

Page 51: Javascript Tutorial

Handlino http://handlino.com/

<html><body><span id="nickname">gugod</span><script type="text/javascript">

var nickname = document.getElementById("nickname") .childNodes[0] .nodeValue;

alert(nickname);

</script></body></html>

Page 52: Javascript Tutorial

Handlino http://handlino.com/

<head> <script type="text/javascript" src="jquery.min.js"></script></head>

Add jQuery

Page 53: Javascript Tutorial

Handlino http://handlino.com/

Hello (jQuery)<html><head> <script type="text/javascript" src="jquery.js"></script></head><body><span id="nickname">gugod</span><script type="text/javascript">

var nickname = $("#nickname").text();

alert(nickname);

</script></body></html>

Page 54: Javascript Tutorial

Handlino http://handlino.com/

Hello (jQuery)<html><head> <script type="text/javascript" src="jquery.js"></script></head><body><span id="nickname">gugod</span><script type="text/javascript">

var nickname = $("#nickname").text();

alert(nickname);

</script></body></html>

Page 55: Javascript Tutorial

Handlino http://handlino.com/

Hello (jQuery)<html><head> <script type="text/javascript" src="jquery.js"></script></head><body><span id="nickname">gugod</span><script type="text/javascript">

var nickname = $("#nickname").text();

alert(nickname);

</script></body></html>

Page 56: Javascript Tutorial

Handlino http://handlino.com/

Output

Page 57: Javascript Tutorial

Handlino http://handlino.com/

• Browser Built-in

• alert()

• DOM

• Ajax

• HTTP POST

Page 58: Javascript Tutorial

Handlino http://handlino.com/

<span id="output"></span>

<script type="text/javascript">

var message = "Hello, world";

$("#output").text(message);

</script>

DOM

Page 59: Javascript Tutorial

Handlino http://handlino.com/

Input + Output

<span id="output"></span><script type="text/javascript">

var message = "Hello, " + prompt("Your name is: ");

$("#output").text(message);

</script>

Page 60: Javascript Tutorial

Handlino http://handlino.com/

Other Topics

Page 61: Javascript Tutorial

Handlino http://handlino.com/

☻Intermission☺

Page 62: Javascript Tutorial

Handlino http://handlino.com/

jQueryjquery.com

Page 63: Javascript Tutorial

Handlino http://handlino.com/

CSS

Page 64: Javascript Tutorial

Handlino http://handlino.com/

p { line-height: 1.5em;}

Page 65: Javascript Tutorial

Handlino http://handlino.com/

query { property: value;}

Page 66: Javascript Tutorial

Handlino http://handlino.com/

query1, query2 { property1: value1; property2: value2; property3: value3;}

Page 67: Javascript Tutorial

Handlino http://handlino.com/

h1, h2 { font-family: Helvectica; color: #555; border-bottom: 1px solid #aaa;}

Page 68: Javascript Tutorial

Handlino http://handlino.com/

h1, h2 { font-family: Helvectica; color: #555; border-bottom: 1px solid #aaa;}h1 { font-size: 2em; }h2 { font-size: 1.5em; }

Page 69: Javascript Tutorial

Handlino http://handlino.com/

選元素

Page 70: Javascript Tutorial

Handlino http://handlino.com/

選元素

• tagname

• #id

• .class

• tag[attr=value]

• h1, h2, div

• <div id=”nav”>

• <h1 class=”title”>

• <input name=”nick”>

Page 71: Javascript Tutorial

Handlino http://handlino.com/

jQuery 選元素

• $(“h1”)

• $(“#id”)

• $(“.class”)

• $(“input[name=nick]”)

Page 72: Javascript Tutorial

Handlino http://handlino.com/

jQuery

Page 73: Javascript Tutorial

Handlino http://handlino.com/

jQuery 選元素

• jQuery(“h1”)

• jQuery(“#id”)

• jQuery(“.class”)

• jQuery(“input[name=nick]”)

Page 74: Javascript Tutorial

Handlino http://handlino.com/

jQuery 選元素

• $(“h1”)

• $(“#id”)

• $(“.class”)

• $(“input[name=nick]”)

Page 75: Javascript Tutorial

Handlino http://handlino.com/

$

Page 76: Javascript Tutorial

Handlino http://handlino.com/

function $(query) { var elements = <magic>; return elements;}

Page 77: Javascript Tutorial

Handlino http://handlino.com/

試玩 jQuery

• Grab jQuerify: http://is.gd/aab6

• Visit google.com

• Click jQuerify

• Click js shell

Page 78: Javascript Tutorial

Handlino http://handlino.com/

Let’s play some jQuery

$("input").size();$("input[name=q]").val("Taipei");$("input[name=btnI]").click();

Page 79: Javascript Tutorial

Handlino http://handlino.com/

Let’s play some jQuery

$("input").hide();$("input").show("slow");$("input").css({ "background": "red" });

Page 80: Javascript Tutorial

Handlino http://handlino.com/

jQuery collections

• $() 會傳回 jQuery collection,「一群元素」

• 可以對其呼叫各種方法,同時操作這群元素

Page 81: Javascript Tutorial

Handlino http://handlino.com/

操作一群元素

$("div.section").addClass("highlight");

$("img.photo").attr("src", "img/hi.png");

$("a.foo").html("<em>Click me</em>");

$("p:odd").css("background","#ccc");

Page 82: Javascript Tutorial

Handlino http://handlino.com/

取得各種值

var height = $("div#first").height();

var img_src = $("img.photo").attr("src");

var lastP = $("p:last").html();

Page 83: Javascript Tutorial

Handlino http://handlino.com/

Other topics

• DOM Traversal

• Browser Events

• Ajax

• Plugins

• Effects

• UI

Page 84: Javascript Tutorial

Handlino http://handlino.com/

Effect

Page 85: Javascript Tutorial

Handlino http://handlino.com/

jQuery hide

<div id="hello">Hello</div><script type="text/javascript">

$("#hello").hide('slow');

</script>

Page 86: Javascript Tutorial

Handlino http://handlino.com/

Show on click

<script type="text/javascript">$("#hi").click(function() { $("#hello").slideDown();});</script>

#hello { display: none }

<a href="#" id="hi">Hi</a><div id="hello">Hello</div>HTML

CSS

Javascript

http://gist.github.com/31889

Page 87: Javascript Tutorial

Handlino http://handlino.com/

Show on click

<script type="text/javascript">$("#hi").click(function() { $("#hello").slideToggle();});</script>

#hello { display: none }

<a href="#" id="hi">Hi</a><div id="hello">Hello</div>HTML

CSS

Javascript

http://gist.github.com/31892

Page 88: Javascript Tutorial

Handlino http://handlino.com/

Show on click

<script type="text/javascript">$("#hi").click(function() { $("#hello").slideToggle();});</script>

#hello { display: none }

<a href="#" id="hi">Hi</a><div id="hello">Hello</div>HTML

CSS

Javascript

http://gist.github.com/31892

Page 89: Javascript Tutorial

Handlino http://handlino.com/

More Info

• http://jquery.com/

• http://visualjquery.com/

Page 90: Javascript Tutorial

Handlino http://handlino.com/

作業

• 試寫一 BMI 計算機。輸入身高 (cm) 與體重 (kg),並顯示出 BMI

• BMI = 體重 / 身高2

公尺

Page 91: Javascript Tutorial

Handlino http://handlino.com/

予想界面

Page 92: Javascript Tutorial

Handlino http://handlino.com/

解答

http://gist.github.com/31899