Hướng dẫn dùng myimage JavaScript

*Lưu ý: Tất cả nội dung đều được lấy từ Internet và dịch lại. Và tôi cố gắng dịch thuật để truyền đạt lại bằng tiếng Việt theo cách rõ ràng nhất. Nguồn bài viết có thể trích xuất từ W3Schools cho bạn nào muốn đọc tiếng Anh và có thể được bổ sung từ nhiều nguồn khác.


Tổng quát

JavaScript là ngôn ngữ lập trình hỗ trợ HTML và web – và cũng tương đối dễ nắm bắt.

Sau đây sẽ là loạt bài hướng dẫn về JavaScript thông qua các ví dụ cho dễ hiểu.

Tại sao lại là JavaScript?

JavaScript là 1 trong 3 ngôn ngữ mà một lập trình viên web cần phải biết:

1. HTML: chỉ định nội dung (content) trang web

2. CSS: định dạng giao diện trang

3. JavaScript: lập trình các hành động xử lý trên trang web

Mục tiêu

Hiểu về JavaScript, JavaScript reference, HTML DOM, browser objects

0.88%


JavaScript có thể thay đổi nội dung HTML

Một trong các hàm phổ biến là getElementById()

Ví dụ sau đây sẽ dùng hàm getElementById() để tìm đến 1 thẻ (tag) HTML dựa vào định danh id của thẻ đó (vd: id “demo”) và thay đổi nội dung thẻ đó dùng hàm innerHTML

document.getElementById("demo").innerHTML = "Hello JavaScript";

Link

JavaScript có thể thay đổi thuộc tính (Attribute) thẻ HTML

Với thẻ img có src là “pic_bulboff.gif”

Hướng dẫn dùng myimage JavaScript

Dùng JavaScript thay đổi src thành “pic_bulbon.gif”

function changeImage() {
 var image = document.getElementById('myImage');
 if (image.src.match("bulbon")) {
 image.src = "pic_bulboff.gif";
 } else {
 image.src = "pic_bulbon.gif";
 }
}

Link

JavaScript có thể thay đổi CSS thẻ HTML

Thay đổi kiểu (style) của HTML chính là một dạng biến thể thay đổi thuộc tính

document.getElementById("demo").style.fontSize = "25px";

Link

JavaScript có thể xác thực dữ liệu

JavaScript cũng thường được dùng để xác thực dữ liệu truyền vào form, hoặc đầu vào (input) của một trang web

Giả sử trang web có các components như sau:

Please input a number between 1 and 10:

Mã JavaScript để kiểm tra validate dữ liệu input như sau:

function myFunction() {
 var x, text;
// Get the value of the input field with id="numb"
 x = document.getElementById("numb").value;
// If x is Not a Number or less than one or greater than 10
 if (isNaN(x) || x  10) {
 text = "Input not valid";
 } else {
 text = "Input OK";
 }
 document.getElementById("demo").innerHTML = text;
}

Link

1.76%


Đặt JavaScript ở đâu?

JavaScript có thể đặt trong HTML (trong thẻ hoặc thẻ ), và file *.js từ bên ngoài mà tùy nhu cầu các file html có thể gọi tới.

Thẻ

Trong html, JavaScript phải được đặt trong cặp thẻ

<script>
document.getElementById("demo").innerHTML = "My First JavaScript";
</script>

JavaScript Functions (chức năng) and Events (sự kiện)

JavaScript function là một chuỗi các dòng mã JavaScript, mà nó sẽ thực thi xử lý tính toán một yêu cầu nào đó. Một function sẽ được gọi khi có một event xuất hiện (khi nhấn 1 button trên màn hình, khi click chuột)

JavaScript trong và


 <script>
 </script>



 <script>
 </script>
  • Note: invoked = called

Nếu đặt script trong  thì nên đặt ở cuối nội dung , tùy biến này sẽ giúp việc hiển thị web page tốt hơn do không bị trở ngại bởi việc tải script sẽ diễn ra sau đó.

Tải script từ file JavaScript độc lập

Như đã nói ở trên, file JavaScript có tên dạng *.js, sẽ rất có lợi nếu một đoạn JavaScript code nào đó được sử dụng nhiều lần trên một hoặc nhiều page html thì việc tái sử dụng file JavaScript sẽ giúp giảm thiểu rất nhiều thời gian và công sức.

Để gọi một file JavaScript thì ta đặt trên của file đó trong thuộc tính src của thẻ

  • Viết lên alert box (hộp thông báo của browser) dùng hàm window.alert()
  • Viết thông qua xuất liệu của HTML dùng hàm document.write()
  • Viết vào các element của HTML dùng hàm innerHTMl
  • Viết vào điều khiển của browser (browser console) dùng hàm console.log()

window.alert()

<script>
 window.alert(5 + 6);
</script>

document.write()

<script>
 document.write(5 + 6);
</script>

document.write() sau khi được gọi sẽ xóa hết hiển thị của html, vì chức năng này chỉ nên dùng cho mục đích đã xác định

innerHTMl

Để tương tác vào một HTML element thì JavaScript sẽ dùng hàm document.getElementById(id) rồi sau đó định nghĩa lại nội dung của element đó bằng hàm innerHTMl:

Element paragraph của html được định danh bằng id = “demo”:

<p id="demo"></p>

Script sau sẽ thay đổi nội dung của element trên:

<script>
document.getElementById("demo").innerHTML = 5 + 6;
</script>
  • id là định danh bắt buộc phải có để JavaScript gọi tới chính xác element cần viết dữ liệu lên

console.log()

Trong các trình duyệt hiện nay, chỉ cần ấn F12 và sau đó chọn thẻ console để xem được giá trị được viết ra bởi JavaScript

Link

3.52%


Cú pháp trong JavaScript

Một chương trình (program) là một tập hợp danh sách các chỉ thị cần thực hiện. Các chỉ thị này được gọi là lệnh (statement). JavaScript là ngôn ngữ lập trình mà các lệnh bị chia cách bởi dấu chấm phẩy (;)

var x = 5;
var y = 6;
var z = x + y;

Lệnh trong JavaScript

Lệnh trong JavaScript được viết bởi:

Giá trị (Value), Biểu thức (Expression), Toán tử (Operator), Từ khóa (Keyword) và Chú thích (Comment)

Giá trị

Trong JavaScript có giá trị cố định gọi là literals và giá trị biến gọi là variables.

Literals

Đối với kiểu số thì cần phải viết có hoặc không có dấu thập phân:

10.50

1001

Đối với kiểu chuỗi thì viết trong dấu nháy đơn hoặc nháy đôi:

"John Doe"

'John Doe'

Variables

Variables dùng để chứa 1 giá trị nào đó, để khai báo một biến variable ta dùng keyword var để định nghĩa, toán tử = dùng để gán một giá trị cho biến đã được khai báo.

var x;

x = 6;

Toán tử

Toán tử gán (=)

Toán tử toán học (+, -, *, /)

Biểu thức

Là một chuỗi kết hợp giữa các giá trị, biến và toán tử

x = 5 * 10
  • Các giá trị trong trường hợp này (x, 5, 10) sẽ được gọi là toán hạng (operands).

Từ khóa

Dùng để xác định một hành động cần làm, ví dụ như từ khóa var sẽ cho ta browser biết cần tạo một biến.

Chú thích

Mã hoặc chú thích được viết sau // hoặc bên trong cặp /**/ sẽ là chú thích, chú thích sẽ được bỏ qua và không thực hiện xử lý.

var x = 5;   // I will be executed

// var x = 6;   I will NOT be executed

JavaScript Identifier

Identifier là một định danh dùng để đặt cho biến hoặc keyword, function và label.

Quy luật đặt tên chữ đầu tiên phải là chữ cái, dấu ghạch dưới _ hoặc là dấu đô la $

JavaScript có phân biệt chữ hoa chữ thường

lastName và lastname sẽ là 2 biến khác nhau:

lastName = "Doe";
lastname = "Peterson";
  • Note: đối với keyword là ngoại lệ (vd: VAR và Var là như nhau)

Các kiểu đặt tên biến và hàm

Trong JavaScript thường sử dụng kiểu Camel Case, kiểu Hyphens sẽ không được hỗ trợ vì dễ hiểu lầm thành dấu trừ.

Tham khảo

Mã chữ trong JavaScript

JavaScript sử dụng mã chữ Unicode

Tham khảo

4.4%


Lệnh JavaScript

Lệnh sẽ nói với trình duyệt sẽ cần phải làm gì.

Chương trình JavaScript

Là tập hợp chứa các lệnh JavaScript sẽ được thực thi theo thứ tự từ trên xuống và theo từng bước.

var x = 5;
var y = 6;
var z = x + y;
document.getElementById("demo").innerHTML = z;

Semicolons ;

Khi đã phân cách bằng dấu chấm phẩy thì các lệnh có thể được viết trên cùng 1 dòng

Khoảng trắng

Chỉ có ý nghĩa trong vài trường hợp, ví dụ dưới đâu là 2 lệnh tương đương nhau:

var person = "Hege";
var person="Hege";

Nên viết mã rõ ràng đặc biệt là đối với các biểu thức:

var x = y + z;

Chiều dài dòng lệnh và ngắt dòng

Để thuận tiện cho việc đọc mã đối với những dòng lệnh quá dài thì nên ngắt dòng nếu dòng lệnh dài hơn 80 ký tự. Vị trí ngắt dòng đẹp thường là sau các toán tử.

document.getElementById("demo").innerHTML =
"Hello Dolly.";

JavaScript Code Block

Các dòng lệnh có thể được gộp chung với nhau trong một cặp ngoặc nhọn {…} và được gọi là một block mã hoặc block lệnh, mục đích để xác định những lệnh sẽ được thực thi cùng nhau. Một block như vậy được gọi là một chức năng (function):

function myFunction() {
    document.getElementById("demo").innerHTML = "Hello Dolly.";
    document.getElementById("myDIV").innerHTML = "How are you?";
}

JavaScript Keyword

Là các từ khóa đã được đăng ký trước, các từ này sẽ không được dùng cho mục đích khác như đặt tên cho biến hoặc hàm

KeywordDescription
break Terminates a switch or a loop
continue Jumps out of a loop and starts at the top
debugger Stops the execution of JavaScript, and calls (if available) the debugging function
do … while Executes a block of statements, and repeats the block, while a condition is true
for Marks a block of statements to be executed, as long as a condition is true
function Declares a function
if … else Marks a block of statements to be executed, depending on a condition
return Exits a function
switch Marks a block of statements to be executed, depending on different cases
try … catch Implements error handling to a block of statements
var Declares a variable

5.28%


Chú thích trong JavaScript

Chú thích dùng để giải thích cho đoạn mã, làm cho nó dễ đọc dễ hiểu. Hoặc cũng có thể dùng để khóa mã ngăn chặn câu lệnh thực thi vào một thời điểm hoặc lưu nhật ký thay đổi của câu lệnh.

Chú thích một dòng

Là chú thích mà tất cả các nội dung từ sau dấu // cho đến cuối dòng sẽ không được thực thi trong chương trình.

// Change heading:
document.getElementById("myH").innerHTML = "My First Page";
var x = 5;      // Declare x, give it the value of 5

Chú thích đa dòng

Là chú thích mà tất cả các nội dung từ sau dấu /* cho đến */ sẽ không được thực thi trong chương trình.

/*
The code below will change
the heading with id = "myH"
and the paragraph with id = "myP"
in my web page:
*/
document.getElementById("myH").innerHTML = "My First Page";
document.getElementById("myP").innerHTML = "My first paragraph.";

6.16%


JavaScript Variables

Biến dùng để chứa giá trị

JavaScript Identifiers

Tất cả các JavaScript variables cần được định danh bằng tên duy nhất (unique names), những tên duy nhất này được gọi là identifiers

Toán tử gán

Trong JavaScript toán tử là toán tử gán mà toán hạng bên phải dấu = sẽ được gán vào toán hạng bên trái dấu =. Toán tử = không phải là toán tử bằng.

Kiểu dữ liệu

JavaScript cũng có đa dạng kiểu dữ liệu, kiểu chuỗi sẽ đặt trong cặp nháy đơn hoặc nháy đôi, kiểu số thì không cần đặt trong dấu nháy nhưng nếu được đặt trong cặp nháy thì nó sẽ được hiểu là kiểu chuỗi.

Khai báo biến

Cách khai báo một biến như sau.

var carName;

Về mặc kỹ thuật, nếu biến không được gán giá trị thì nó được gán giá trị là undefined.

Giá trị có thể được gán ngay khi khởi tạo:

var carName = "Volvo";

Có thể khai báo nhiều biến cùng lúc trên cùng dòng lệnh hoặc nhiều dòng liên tiếp, trong đó các biến sẽ cách nhau bằng dấu phẩy:

var person, carName = "Volvo",
 price = 200;

Nếu tái khai báo một biến thì nó sẽ vẫn giữ nguyên giá trị được gán từ trước:

var carName = "Volvo";
var carName;
  • Note: Nếu viết lệnh thực hiện phép + các toán hạng khác kiểu dữ liệu thì mặc định các toán hạng có kiểu dữ liệu mà độ ưu tiên thấp sẽ bị ép kiểu thành kiểu dữ liệu mà độ ưu tiên phù hợp nhất với bối cảnh
var x = "5" + 2 + 3;

Biến x sẽ mang giá trị “523”

Link

7.04%


Bài tập 1    Bài tập 2    Bài tập 3    Bài tập 4     Bài tập 5    Bài tập 6


Các toán tử toán học

OperatorDescription
+ Addition
Subtraction
* Multiplication
/ Division
% Modulus (Chia lấy dư)
++ Increment (Tăng thêm một)
Decrement (Giảm xuống một)

Các toán tử gán

OperatorExampleSame As
= x = y x = y
+= x += y x = x + y
-= x -= y x = x – y
*= x *= y x = x * y
/= x /= y x = x / y
%= x %= y x = x % y

Toán tử ghép/xích chuỗi

Toán tử khi được dùng với toán hạng kiểu chuỗi nó sẽ trở thành toán tử ghép/xích chuỗi

txt1 = "John";
txt2 = "Doe";
txt3 = txt1 + " " + txt2;

Giá trị của txt3 sẽ là “John Doe”

  • Note: Toán tử += cũng được sử dụng tương tự.

Toán tử so sánh và luận lý

OperatorDescription
== equal to
=== tương đương cả về giá trị lẫn kiểu
!= not equal
!== not equal value or not equal type
> greater than
< less than
>= greater than or equal to
<= less than or equal to
Hướng dẫn dùng myimage JavaScript
Comparison and logical operators are described in the JS Comparisons chapter.

7.92%


Độ ưu tiên của toán tử

Nhân chia trước, cộng trừ sau.

Từ trái sang phải.

Độ ưu tiên của toán tử dựa trên trị số

Số càng lớn thì độ ưu tiên càng cao

ValueOperatorDescriptionExample
19 ( ) Expression grouping (3 + 4)
18 . Member person.name
18 [] Member person[“name”]
17 () Function call myFunction()
17 new Create new Date()
16 ++ Postfix Increment i++
16 Postfix Decrement i–
15 ++ Prefix Increment ++i
15 Prefix Decrement –i
15 ! Logical not !(x==y)
15 typeof Type typeof x
14 * Multiplication 10 * 5
14 / Division 10 / 5
14 % Modulo division 10 % 5
14 ** Exponentiation 10 ** 2
13 + Addition 10 + 5
13 Subtraction 10 – 5
12 << Shift left x << 2
12 >> Shift right x >> 2
11 < Less than x < y
11 <= Less than or equal x <= y
11 > Greater than x > y
11 >= Greater than or equal x >= y
10 == Equal x == y
10 === Strict equal x === y
10 != Unequal x != y
10 !== Strict unequal x !== y
6 && And x && y
5 || Or x || y
3 = Assignment x = y
3 += Assignment x += y
3 -= Assignment x -= y
3 *= Assignment x *= y
3 /= Assignment x /= y

8.8%


Bài tập 1    Bài tập 2    Bài tập 3    Bài tập 4     Bài tập 5


Toán tử gán

9.68%


Bài tập 1    Bài tập 2    Bài tập 3    Bài tập 4     Bài tập 5


Kiểu dữ liệu

String, Number, Boolean, Array, Object,…

var length = 16;                               // Number
var lastName = "Johnson";                      // String
var cars = ["Saab", "Volvo", "BMW"];           // Array
var x = {firstName:"John", lastName:"Doe"};    // Object

Khái niệm về kiểu dữ liệu

Cần hiểu rõ bản chất của từng kiểu dữ liệu, khái niệm về kiểu dữ liệu sẽ rất quan trọng trong việc xử lý các biểu thức.

JavaScript sẽ xử lý biểu thức theo chiều từ trái sang phải, thứ tự trong biểu thức khác nhau sẽ dẫn đến kết quả khác nhau, ví dụ:

var x = 16 + 4 + "Volvo";    //Kết quả của x sẽ là "20Volvo"

Sẽ khác với biểu thức sau

var x = "Volvo" + 16 + 4;    //Kết quả của x sẽ là "Volvo164"

Kiểu động trong JavaScript

Trong JavaScript hỗ trợ khai báo biến kiểu động, kiểu chính xác của biến sẽ được xác định khi biến được gán giá trị lần đầu điên và không thể thay đổi kiểu trong những lần gán sau đó.

var x;               // Now x is undefined
x = 5;           // Now x is a Number

Kiểu chuỗi

Là kiểu sau một chuỗi ký tự lại với nhau, kiểu chuỗi cần thiết phải đặt trong cặp dấu nháy. Có thể sử dụng dấu nháy đơn trong nháy đôi để biểu diễn câu cú của chuỗi và ngược lại miễn dấu nháy bên trong không trùng với dấu nháy mở chuỗi.

var answer = "It's alright";             // Single quote inside double quotes
var answer = "He is called 'Johnny'";    // Single quotes inside double quotes
var answer = 'He is called "Johnny"';    // Double quotes inside single quotes

Kiểu số

JavaScript chỉ có một kiểu số, có thể có hoặc không có dấu thập phân.

Kiểu Booleans

Kiểu booleans chỉ có 2 giá trị là true hoặc false.

Kiểu mảng

Kiểu arrays được viết trong dấu ngoặc vuông […], mỗi phần tử được viết cách nhau bởi dấu phẩy. Kiểu mảng có mục lục địa chỉ bắt đầu từ 0.

var cars = ["Saab""Volvo""BMW"];

Kiểu đối tượng

Kiểu Objects được viết trong dấu ngoặc nhọn {…}, đối tượng là kiểu luôn đi thành cặp name:value, mỗi thuộc tính trong đối tượng viết cách nhau bởi dấu phẩy.

var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};

Trong ví dụ trên đối tượng person có 4 thuộc tính.

Toán tử typeof

Toán tử typeof dùng để tìm xem biến thuộc kiểu dữ liệu nào.

  • Note: Array là một kiểu đặt biệt trong JavaScript và nó được xem là Object

Undefined

Trong JavaScript nếu một biến tự do chưa được gán giá trị thì giá trị được xem là undefined, kiểu của nó cũng là undefined.

Có 2 cách khai báo biến tự do như sau:

var person;                  // Value is undefined, type is undefined
person = undefined;          // Value is undefined, type is undefined

Giá trị rỗng

Biến có giá trị rỗng không phải là biến undefined, nó có giá trị “” với kiểu chuỗi.

Giá trị NULL

Tương tự như undefined, nhưng giá trị null lại có kiểu là Object và giá trị của nó không phải là “” mà là không gì cả, cũng không phải undefined

Phân biệt Undefined và NULL

Về cơ bản, NULL và undefined đều được xem là không là gì cả. Nhưng về kiểu là khác nhau.

typeof undefined             // undefined
typeof null                  // object
null === undefined           // false
null == undefined            // true

10.56%


JavaScript function (chức năng)