21/11/2018, 23:49

Tổng hợp bài tập JavaScript có giải

Nhằm giúp cho việc học JavaScript của các bạn dễ dàng hơn, Quantrimang.com đã tổng hợp một số bài tập JavaScript có kèm theo lời giải mẫu để các bạn thực hành. Phần đầu sẽ là khoảng 40 bài tập JavaScript có giải mẫu, phía cuối bài viết là những bài tập JavaScript tự giải, những bài khó có ...

Nhằm giúp cho việc học JavaScript của các bạn dễ dàng hơn, Quantrimang.com đã tổng hợp một số bài tập JavaScript có kèm theo lời giải mẫu để các bạn thực hành.

Phần đầu sẽ là khoảng 40 bài tập JavaScript có giải mẫu, phía cuối bài viết là những bài tập JavaScript tự giải, những bài khó có kèm theo hướng dẫn, giải thích cụ thể để các bạn không bị ngợp. Hy vọng chủ đề này sẽ hữu ích với các bạn đang tìm hiểu về ngôn ngữ lập trình JavaScript.

Cùng bắt đầu nhé!

Bài tập JavaScript 1: Cho người dùng nhập vào tên và tuổi. Hãy viết lại tên và tuổi của người đó ra màn hình bằng hàm document.write, trong đó tên có màu đậm, tuổi được gạch chân.

Giải mẫu:

<HTML>
 <HEAD> </HEAD>
 <BODY>
 <script language = "JavaScript">
 var Ten, Tuoi; // Khai báo 2 biến để lưu tên và tuổi
 Ten = prompt("Bạn hãy nhập vào tên ", "");
 Tuoi = prompt("Bạn hãy nhập vào Tuổi : ", 20);
 document.write("Chào bạn : <B> " + Ten + "</B>");
 document.write("<BR>"); // Xuống dòng
 document.write("Tuổi của bạn là : <U> " + Tuoi + "</U>");
 </script>
 </BODY>
 </HTML> 

Bài tập JavaScript 2: Tạo một nút nhấn (button) có name là welcome, value là " Welcome ". Một textbox có tên là msg, value = "Welcome to".

Hướng dẫn: Sử dụng phương thức (hàm) write của đối tượng document để tạo.

Giải mẫu:

<HTML>
 <HEAD> </HEAD>
 <BODY>
 <script language = "JavaScript">
 
 document.write("Tao Button va Text bang Script<BR>");
 document.write("<BR>");
 document.write("<input type=button name=welcome value = 'Welcome' ");
 document.write("onclick = 'alert ('Welcome to JavaScript');' > ");
 document.write("<input type = text name = msg value = 'Welcome to'>");
 
 </script>
 </BODY>
 </HTML> 

Bài tập JavaScript 3: Tạo một nút như trong ví dụ 2 và thêm chức năng sau: Khi người dùng click vào nút welcome thì hiển thị thông báo "Welcome to JavaScript"

Hướng dẫn: Dùng thẻ để tạo nút nhấn và thêm thuộc tính onClick = "<Câu lệnh JavaScript>;" (Trong đó <Câu lệnh JavaScript> có thể là một lệnh JavaScript bất kỳ, ví dụ lệnh document.write, alert, prompt hoặc lệnh gọi hàm v.v...)

Giải mẫu: 

<HTML>
 <HEAD> </HEAD>
 <BODY>
 <input type=button name= welcome value="Welcome" onclick="alert('Welcome to JavaScript');">
 </BODY>
 </HTML>

Lưu ý quan trọng: Trong JavaScript, một hằng xâu được bao bởi cặp nháy đơn hoặc nháy kép, ví dụ các xâu: 'nháy đơn', "nháy kép" là những xâu hợp lệ, tuy nhiên bạn viết: 'abc" hay "xyz' là những xâu không hợp lệ. Trong trường hợp bạn muốn in chính bản thân dấu nháy đơn hoặc nháy kép ra màn hình thì bạn đặt trước nó một ký tự , ví dụ bạn có thể in ra màn hình dòng chữ: Women's day ra màn hình bằng hai hàm alert và document theo các cách sau đây: alert("Women's day"), document.write('Women's day'); alert("Women"s day"); alert('Women"s day'); v.v... 

Bài tập JavaScript 4: Lấy (đọc) giá trị của một phần tử HTML

Tạo 2 phần tử như trong ví dụ 2 bằng thẻ HTML, khi người dùng click chuột vào nút Welcome thì hiển thị nội dung chứa trong text có tên là msg.

Hướng dẫn: Để lấy giá trị của một phần tử HTML, bạn viết <Tên phần tử>.value

Ví dụ: msg.value cho ta giá trị của text tên là msg.

Giải mẫu: 

<HTML>
 <HEAD> </HEAD>
 <BODY> 
 
 <input type = button name = welcome value = "Welcome" onclick = "alert(msg.value)">
 <input type = text name = msg value = "Welcome to JavaScript" size = 30>
 
 </BODY>
 </HTML>

Bài tập JavaScript 5: Khai báo hàm trong JavaScript và cách liên kết nút nhấn với một hàm

Tạo 2 phần tử như ví dụ 2, khi người dùng nhấn nút thì gọi một hàm có tên là HienThi, hàm hiển thị có chức năng hiển thị nội dung trong text có tên là msg ở trên.

Hướng dẫn: Trong thẻ tạo button, bạn đặt thuộc tính onClick = "<Tên hàm>", trong trường hợp này bạn đặt OnClick = "HienThi()". Điều này có nghĩa là khi người sử dụng Click chuột (OnClick = Click chuột) thì trình duyệt hãy gọi hàm HienThi(). Cũng giống như trong ngôn ngữ C, Một hàm bắt buộc phải có cặp ngoặc đơn, cho dù có tham số hay không. Ví dụ khi gọi hàm HienThi thì bạn phải viết là HienThi().

Giải mẫu:

<HTML>
 <HEAD>
 
 <Script Language = "JavaScript">
 function HienThi() // Khai báo một hàm tên là HienThi
 {
 alert(msg.value); // Lấy nội dung trong text box và hiển thị
 alert("Bạn hãy nhập vào ô text và thử lại !");
 }
 
 </Script>
 </HEAD> 
 
 <BODY>
 
 <input type = button name = welcome value = "Welcome" onclick = "HienThi()">
 <input type = text name = msg value = "Welcome to JavaScript" size = 30>
 
 </BODY> 
 </HTML>

Lưu ý: Trong C, để khai báo một hàm thường bạn viết, ví dụ: int HienThi() v...v.. Tuy nhiên, với JavaScript có hơi khác tí chút, thay vào đó bạn viết function HienThi(). 

Bài tập JavaScript 6: Minh hoạ cách khai báo và sử dụng đối tượng Date trong JavaScript để hiển thị ngày giờ của hệ thống.

Yêu cầu: Hãy hiển thị ngày và giờ của hệ thống máy tính khi trang Web được nạp. Thông tin hiển thị ra có dạng như sau:

Bài tập hiển thị ngày giờ hệ thống

Hướng dẫn: Sử dụng đối tượng Date và sử dụng các hàm lấy thứ, ngày, tháng, năm để in thông tin ra màn hình. Chú ý đến các hàm tính tháng, ngày trong tuần bị hụt một đơn vị. 

Bài tập JavaScript 7: Minh hoạ sử khai báo và dùng đối tượng Date để lấy giờ, phút, giây của hệ thống.

Yêu cầu: Hiển thị Giờ và phút trong thanh tiêu đề của cửa sổ khi trang Web được nạp.

Hướng dẫn: Giá trị hiển thị trong thanh tiêu đề của trang web được lưu trong thuộc tính title của đối tượng document, do vậy để hiển thị thông tin trên thanh tiêu đề, bạn cần viết: document.title = <Giá trị>. Ví dụ, để hiển thị dòng chữ "Hello Every body !", bạn viết: document.title "Hello Every body !"

Minh hoạ:

<HTML>
 <BODY>
 <script language="JavaScript">
 var D = new Date();
 document.title = "Bây giờ là: " + D.getHours()+" giờ "+ D.getMinutes()+ " phút.";
 </script>
 </BODY>
 </HTML>

Bài tập JavaScript 8: Vận dụng biến đối tượng Date để tính tuổi của một người.

Yêu cầu : Cho người dùng nhập vào năm sinh của họ, sau đó hiển thị tuổi tương ứng.

Hướng dẫn: Sử dụng đối tượng Date để lấy năm hiện tại. Tuổi sẽ bằng năm hiện tại trừ đi năm sinh vừa nhập vào.

Minh hoạ mẫu: 

<HTML>
 <TITLE>Tính tuổi</TITLE>
 <BODY>
 <script language="JavaScript">
 var D = new Date();
 var NamSinh, NamHienTai;
 NamHienTai = D.getYear(); // Lưu năm hiện tại vào biến
 NamSinh = prompt("Bạn sinh năm bao nhiêu ? : ","");
 alert("Tuổi của bạn bây giờ là : " + (NamHienTai-NamSinh));
 </script>
 </BODY>
 </HTML>

Bài tập JavaScript 9: Tương tự như bài 3 nhưng năm sinh nhập vào không được lớn hơn năm hiện tại.

Hướng dẫn: Sử dụng vòng lặp do…while để yêu cầu nhập lại nếu năm sinh > năm hiện tại.

Minh hoạ mẫu: 

<HTML>
 <TITLE>Tinh tuoi</TITLE>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <BODY>
 <script language="JavaScript">
 var D = new Date();
 var NamSinh, NamHienTai;
 NamHienTai = D.getYear(); //Lưu năm hiện tại vào biến
 do {
 NamSinh = prompt("Bạn sinh năm bao nhiêu : ","");
 } while (parseInt(NamSinh)>NamHienTai); //Nhập lại nếu Năm sinh>năm hiện tại
 alert("Tuổi của bạn bây giờ là : " + (NamHienTai-NamSinh));
 </script>
 </BODY>
 </HTML>

Bài tập JavaScript 10: Minh hoạ cách đặt các câu lệnh JavaScript vào trong các phần tử HTML để thực thi khi người dùng click chuột và sử dụng hàm open của đối tượng window để mở trang web.

Yêu cầu: Viết đoạn Script cho người dùng nhập vào một số nguyên. Nếu người dùng nhập số 1 thì mở trang Web https://quantrimang.com, nếu nhập số 2 thì mở trang https://download.com.vn, nếu nhập số 3 thì mở trang https://vndoc.com, còn nếu nhập một số khác với 1, 2 hay 3 thì mở trang https://meta.vn.

Hướng dẫn: Để mở một trang Web bất kỳ trong cửa sổ hiện hành bạn viết như sau:

window.open("Địa chỉ của trang cần mở").

Ví dụ: window.open(https://quantrimang.com) để mở trang chủ của VNN trong cửa sổ hiện tại.

Như vậy, để giải quyết yêu cầu của bài toán trên, bạn cần cho người dùng nhập vào một số và sử dụng cấu trúc switch để kiểm tra và mở trang web tương ứng.

Minh hoạ mẫu: 

<HTML>
 <TITLE>Mở trang web bằng hàm open của đối tượng window.</TITLE>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <BODY>
 <script language="JavaScript">
 var LuaChon;
 LuaChon = prompt("Bạn hãy nhập vào một số để mở trang web: ", 1);
 switch (LuaChon)
 {
 case "1" : window.open("https://quantrimang.com"); break;
 case "2" : window.open("https://download.com.vn"); break;
 case "3" : window.open("https://vndoc.com"); break;
 default : window.open("https://meta.vn");
 }
 </script>
 </BODY>
 </HTML>

Bài tập JavaScript 11: Minh hoạ việc khai báo và sử dụng biến đối tượng Array để lưu trữ danh sách và cách sử dụng các hàm của đối tượng Array như hàm sort và vòng lặp for…in

Yêu cầu: Cho người dùng nhập vào danh sách tên của một lớp, sau đó sắp xếp theo vần Alphabet rồi hiển thị danh sách đã sắp xếp đó ra màn hình, mỗi người trên một dòng.

Hướng dẫn: Sử dụng vòng lặp for để cho phép nhập danh sách họ tên và Lưu danh sách vào một mảng, sau đó sử dụng phương thức sort của đối tượng mảng để sắp xếp, tiếp theo dùng vòng lặp for…in để in các phần tử trong danh sách.

Minh hoạ mẫu: 

<HTML>
 <TITLE>Sắp xếp mảng</TITLE>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <BODY>
 <script language="JavaScript">
 var SoLuong, x;
 var DS = new Array(100); //Khai báo mảng DS, có thể lưu tối đa là 100 phẩn tử
 SoLuong = prompt("Bạn cần nhập bao nhiêu người: ", 5);
 for (i=0; i < SoLuong; i++)
 {
 DS[i] = prompt("Nhập vào họ tên: ","");
 }
 //Gọi hàm sort của đối tượng mảng DS để sắp xếp
 DS.sort();
 //Hiển thị kết quả sau khi sắp (sort)
 document.write("<h1>Danh sách đã sắp xếp là </h1>");
 for (x in DS) /* Nên sử dụng cấu trúc for … in này để duyệt mảng */
 {
 document.write( DS[x] );
 document.write("<BR>"); // Xuống dòng
 }
 </script>
 </BODY>
 </HTML>

Nhận xét: Nếu muốn sắp theo chiều giảm dần thì sau khi sort bạn gọi hàm reverse.

Bài tập JavaScript 12: Minh hoạ việc đưa các câu lệnh JS vào trong một thẻ khi người dùng click chuột.

Yêu cầu: Tạo một nút nhấn (Button) có name = "DangKy", value = "Đăng ký". Khi người dùng Click vào nút này thì thông báo là "Đăng ký dịch vụ E-Mail".

Hướng dẫn: Đối với các phần tử HTML, như textbox, button, checkbox, Select v.v… Các trình duyệt đều cho phép ta thực thi một hoặc nhiều câu lệnh JavaScript khi người sử dụng click chuột lên các phần tử đó. Vấn đề ở chỗ, viết các câu lệnh đó như thế nào ?

Để viết các câu lệnh JavaScript khi người dùng click chuột lên một phần tử nào đó, trong thẻ của phần tử này, ta viết như sau: OnClick = "Các câu lệnh JavaScript".

"Các câu lệnh JavaScript" ở đây là bất kỳ câu lệnh JavaScript nào và chúng phải được cách nhau bởi dấu chấm phảy. Ngoài ra, các câu lệnh phải đặt trong cặp dấu nháy kép (Hoặc nháy đơn).

Ví dụ một số cách đưa câu lệnh JavaScript cần thực thi khi người dùng click chuột

  1. Onclick = "alert('Hello world';"
  2. OnClick = 'write("Welcome to JavaScript");'
  3. OnClick = "var x,y; x = 10; y = 20; alert('Tổng là : ' + (x + y)); "
  4. OnClick = "var Tuoi; Tuoi = txtTuoi.value; KiemTra(Tuoi);"
  5. OnClick = "KiemTra();"

Theo ví dụ trên, khi người sử dụng Click:

1: Thực hiện câu lệnh alert('Hello world')

2: Thực hiện câu lệnh document.write('Welcome to JavaScript');

3: Thực hiện NHIỀU câu lệnh JavaScript

4: Thực hiện nhiều câu lệnh JavaScript và có lời gọi đến hàm KiemTra(Tuoi)

5: Thực hiện câu lệnh gọi hàm KiemTra().

Minh hoạ mẫu: 

<HTML>
 <HEAD>
 <TITLE>Minh hoạ đưa câu lệnh JavaScript vào các phần tử</TITLE>
 <META http-equiv="Content-Type" content="text/html; charset=utf-8">
 </HEAD>
 <BODY>
 <INPUT type="button" name="DangKy" value="Đăng ký" onClick="alert('Dang ky E-Mail'); ">
 </BODY>
 </HTML>

Bài tập JavaScript 13: Minh hoạ cách thay đổi thuộc tính của một đối tượng thông qua việc viết các câu lệnh JavaScript.

Tạo một nút có name = ThayMauNen, value = "Thay đổi màu nền". Khi người dùng click chuột vào nút này thì thay đổi màu nền của trang Web thành màu "xanh".

Hướng dẫn: Để thay đổi màu nền của trang Web thành màu, ta cần thay đổi thuộc tính document.bgColor = "blue". (Màu đỏ là red, tìm: magenta, đen: black, trắng: white, vàng: Yellow, tím nhạt: lavender). Như vậy, câu lệnh này sẽ được đặt trong phần onClick như sau:

<HTML>
 <HEAD>
 <TITLE>Thay mau nen bang click chuot</TITLE>
 <META http-equiv="Content-Type" content="text/html; charset=utf-8">
 </HEAD>
 
 <BODY>
 <h2>Thay đổi màu nền sử dụng đối tượng document</h2>
 <INPUT type="button" name="ThayMauNen" value="Thay đổi màu nền"
 onClick="document.bgColor = 'blue' ">
 </BODY>
 </HTML>

Bài tập JavaScript 14: Minh hoạ việc đọc giá trị trong phần tử text và hiển thị ra màn hình

Yêu cầu: Tạo một hộp text có tên là HoTen. Một nút có tên là HienThi, value = "Hiển thị". Khi người dùng click vào nút HienThi thì hiển thị nội dung trong hộp text đó bằng hàm alert.

Hướng dẫn: Để lấy giá trị của một phần tử HTML nào đó, chúng ta viết

<Tên phần tử>.value

Trong đó: <Tên phần tử> chính là giá trị của thuộc tính name khi bạn tạo thẻ.

Ví dụ: - Hoten.value, DangKy.value, GioiTinh.value, Password.value v.v…

Minh hoạ: 

<HTML>
 <HEAD>
 <TITLE>Đọc giá trị trong hộp text</TITLE>
 </HEAD>
 
 <BODY>
 <h2>Hãy gõ văn bản vào trong hộp text và click vào nút Hiển thị</h2>
 <INPUT type="text" name="HoTen" >
 <INPUT type="button" name="HienThi" value="Hiển thị" onClick="alert(HoTen.value); ">
 </BODY>
 </HTML>

Lưu ý: Khi muốn lấy giá trị của phần tử nào đó bằng JavaScript thì bạn phải đặt cho nó một cái tên, như ví dụ ở trên, để lấy giá trị trong hộp text ta đã đặt cho hộp text này tên (name) là HoTen.

Bài tập JavaScript 15: Minh hoạ việc thay đổi giá trị của hộp textbox

Yêu cầu: Tạo ra ba hộp text lần lượt tên là SoHang1, SoHang2, KetQua và một nút có tên là TinhTong, để thực hiện phép tính tổng. Khi người dùng nhập hai số hạng vào hộp SoHang1 và SoHang2, sau đó click vào nút TinhTong thì kết quả tổng sẽ được lưu vào trong hộp text KetQua.

Hướng dẫn: Để thay đổi giá trị một thuộc tính nào đó của phần tử HTML, bạn viết theo cách sau:

<Tên của phần tử>.<Tên thuộc tính> = <Giá trị mới>

Trong đó: Tên phần tử chính là giá trị của thuộc tính name khi bạn tạo thẻ.

Ví dụ: HoTen.value = "Đây là văn bản mới", DangKy.value = "Sign Up now", v.v…

<HTML>
 
 <HEAD>
 <TITLE>Thay đổi giá trị của thuộc tính</TITLE>
 <META http-equiv="Content-Type" content="text/html; charset=utf-8">
 </HEAD>
 
 <BODY>
 <h2>Hãy nhập hai số và click vào nút Tính tổng</h2>
 <INPUT type="text" name="SoHang1" > +
 <INPUT type="text" name="SoHang2"> =
 <INPUT type="text" name="KetQua">
 <INPUT type="button" value="Tính tổng"
 onClick="KetQua.value = parseFloat(SoHang1.value) + parseFloat(SoHang2.value)">
 </BODY>
 
 </HTML>

Lưu ý: - Giá trị lưu trong hộp text luôn là một xâu, do vậy để thực hiện phép cộng được đúng, bạn cần phải chuyển giá trị sang dạng số bằng hàm parseFloat (Hoặc parseInt) như ở trên.

- Việc thay đổi này có thể áp dụng cho các phần tử khác như button, checkbox, v.v… 

Bài tập JavaScript 16: Minh hoạ việc gọi hàm khi người dùng click vào một nút

Yêu cầu: Tạo ra 4 text có tên lần lượt là: MauNen, MauChu, TieuDe, TrangThai và một nút có tên là ThayDoi, value là "Thay đổi". Khi người dùng click vào nút ThayDoi thì màu nền, màu chữ, tiêu đề của tài liệu và thanh trạng thái của cửa sổ trình duyệt sẽ được thay đổi bằng các giá trị trong text tương ứng

Hướng dẫn: Bạn hoàn toàn có thể viết nhiều câu lệnh trong thuộc tính OnClick như các ví dụ trước, tuy nhiên nếu có nhiều lệnh thì chương trình trông không được sáng sủa cho lắm. Khi đó bạn có thể nhóm các câu lệnh vào trong một hàm và trong thuộc tính OnClick bạn chỉ việc gọi hàm này ra.

Minh hoạ mẫu:

<HTML>
 
 <HEAD> <TITLE>Thay đổi thuộc tính của trang Web</TITLE> </HEAD>
 
 <SCRIPT language="JavaScript">
 function CapNhat( )
 {
 document.title = TieuDe.value; /* Thay đổi tiêu đề của trang Web */
 document.bgColor = MauNen.value; /* Thay đổi màu nền của trang */
 document.fgColor = MauChu.value; /* Thay đổi màu chữ của trang */
 window.defaultStatus = TrangThai.value; /* Thay đổi dòng trạng thái của cửa sổ */
 }
 </SCRIPT>
 
 <BODY>
 <h2>Nhập vào các giá trị và nhấn nút Thay đổi</h2>
 <INPUT type="text" name="TieuDe" value="Tiêu đề mới">
 <INPUT type="text" name="MauNen" value="Nhập màu vào đây (ví dụ blue)"> <BR>
 <INPUT type="text" name="MauChu" value="Nhập màu chữ vào đây (ví dụ white)">
 <INPUT type="text" name="TrangThai" value="Nhập dòng trạng thái vào đây "> <BR>
 <INPUT type="button" name ="ThayDoi" value="Thay đổi" onClick="Ham( );">
 </BODY>
 
 </HTML>

Nhận xét: Ở ví dụ trên, khi người dùng click chuột lên nút ThayDoi thì hàm CapNhat( ) sẽ được gọi.

Bài tập JavaScript 17: Hãy tạo một nút nhấn (button) có value = "Thu". Khi người dùng click vào nút này thì tiêu đề của cửa sổ sẽ là "Bạn đã click chuột"

Hướng dẫn: Trước hết ta cần xác định xem các lệnh nào cho phép ta thay đổi tiêu đề của cửa sổ thành "Bạn đã click chuột", tiếp theo là đặt các lệnh đó vào đâu để khi người dùng click chuột thì nó được thực thi theo như yêu cầu bài toán

  • Lệnh để thay đổi tiêu đề như sau: title = "Bạn đã click chuột"
  • Như ta đã biết khi người dùng click thì sự kiện onClick xuất hiện, do vậy câu lệnh trên sẽ được đặt tương ứng vào sự kiện onClick, như sau: 
<HTML>
 
 <HEAD>
 <TITLE>Hãy click vào nút ở dưới và quan sát tiêu đề</TITLE>
 </HEAD>
 
 <BODY>
 <input type=button value="Thu" onClick="document.title='Bạn đã click chuột' "> 
 </BODY>
 
 </HTML>
 
 

Bài tập JavaScript 18: Tạo một trang Web, có 2 phần tử: Phần tử button có value = "Gửi", và một phần tử textbox.Yêu cầu: khi người dùng click vào nút Gửi thì thông báo trên màn hình là: "Bạn đã click vào nút gửi" còn khi người dùng click vào textbox thì thông báo là "Bạn đã click vào textbox".

Hướng dẫn: Theo yêu cầu của bài thì dòng thông báo "Bạn đã click chuột vào nút gửi" xuất hiện chỉ khi người dùng click chuột vào nút gửi, do vậy các lệnh thực hiện hiển thị thông báo sẽ được đặt trong sự kiện onclick của nút nhấn. Còn dòng thông báo "Bạn đã click chuột vào text box" khi người dùng click chuột vào textbox, do vậy các lệnh thực hiện hiển thị dòng thông báo sẽ được đặt trong sự kiện onclick của textbox:

Minh hoạ:

<HTML>
 
 <HEAD>
 <TITLE>Hay click vao nut va textbox o duoi va quan sat tieu de</TITLE>
 </HEAD>
 
 <BODY>
 <input type=button value="Gui" onClick="alert( 'Ban da click chuot vao nut') ">
 <input type=text onclick = "alert('Ban da click chuot vao textbox') ">
 </BODY>
 
 </HTML>

Bài tập JavaScript 19: Tạo 2 nút, nút thứ nhất có value = "Xanh", nút thứ hai có value = "Đỏ".

Yêu cầu: Khi người dùng click vào nút xanh thì màu nền của tài liệu là xanh (blue), còn khi người dùng click vào nút đỏ thì màu nền của tài liệu là: Đỏ (red).

Hướng dẫn: Thuộc tính màu nền của tài liệu được lưu trong thuộc tính bgColor của đối tượng document. Thuộc tính này có thể thay đổi được.

Minh hoạ:

<HTML>
 
 <HEAD> </HEAD>
 <BODY>
 <input type=button value=Xanh onclick="window.document.bgColor = 'blue'; ">
 <input type = button value =Do onclick="window.document.bgColor = 'red'; ">
 </BODY>
 
 </HTML>

Bài tập JavaScript 20:

Tạo một danh sách lựa chọn gồm có 4 màu: red, blue, brown và lavender. Khi người dùng chọn một màu thì màu nền của tài liệu sẽ thay đổi tương ứng.

Minh hoạ:

<HTML>
 
 <HEAD> </HEAD>
 
 <BODY>
 <script language = JavaScript>
 function DoiMau()
 {
 document.bgColor = Mau.value;
 // Hoặc viết: window.document.bgColor = Mau.value;
 }
 </script>
 
 Bạn hãy chọn màu nền:
 <Select name = Mau onchange = "DoiMau();" >
 <option value = red> Màu đỏ </option>
 <option value = blue> Màu xanh </option>
 <option value = brown> Màu nâu </option>
 <option value = lavender> Màu xanh nhạt</option>
 </select>
 </BODY>
 
 </HTML>

Bài tập JavaScript 21: Tạo một textarea có tên là NoiDung, một Textbox có tên là: SoKyTu. Với yêu cầu như sau: Khi người sử dụng gõ các phím vào trong textarea thì số lượng ký tự (Độ dài xâu) chứa trong textarea đó sẽ được hiển thị trong textbox. Nếu số lượng ký tự trong textarea gõ vào vượt quá 200 ký tự thì thông báo: "Bạn đã gõ quá số ký tự cho phép!".

<html>
 
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 </head>
 <script language="JavaScript">
 function KiemTra()
 {
 if (NoiDung.value.length > 200) alert("Bạn đã gõ quá số ký tự cho phép!");
 SoKyTu.value = NoiDung.value.length; // Hiển thị số ký tự trong textbox SoKyTu
 }
 </script>
 <body style="font-family:arial">
 Số ký tự đã gõ: <input type="text" name="SoKyTu"> <BR>
 <textarea name="NoiDung" cols=50 rows="10" onKeyUp="KiemTra();"> </textarea>
 </body>
 
 </html>

Ở ví dụ trên, hàm kiểm tra sẽ được gọi mỗi khi sự kiện nhấn phím (onKeyUp) xuất hiện hay nói cách khác là khi người dùng gõ thêm một ký tự vào trong textarea.  

Bài tập JavaScript 22: Tạo một nút có value = "Gửi", textbox có name = "HoTen", 2 nút radio có tên là GioiTinh và nhãn tương ứng là Nam, nữ.

Yêu cầu: Khi người dùng di chuyển chuột vào phần tử nào thì hiển thị thông báo tương ứng dưới thanh trạng thái. Ví dụ nếu người sử dụng di chuyển chuột qua nút nhấn "Gửi" thì thanh trạng thái sẽ là "Bạn đang di chuyển chuột vào nút"...

Hướng dẫn: Khi người dùng di chuyển chuột thì sự kiện di chuyển chuột sẽ xuất hiện, sự kiện này có tên là : onMoseMove. Vậy ta sẽ viết lệnh trong sự kiện này.

Minh hoạ:

<html>
 
 <head>
 <title>Xu ly su kien</title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 </head>
 
 <body style="font-family:arial">
 <input type="button" value="Gửi" onmousemove="window.status = 'Chuột trong nút'; ">
 <input onMouseMove ="window.status='Chuột trong textbox';"> <BR>
 <input type="radio" name="GioiTinh" onMouseMove="window.status='Trong nam';">Nam </option>
 <input type="radio" name="GioiTinh" onMouseMove="window.status='Trong nữ';"> Nữ </option>
 </body>
 
 </html>

Bài tập JavaScript 23:

Tạo 3 textbox, có tên lần lượt là: SoLuong (Số lượng), DonGia (Đơn giá) và ThanhTien (Thành tiền);

Yêu cầu: Khi người dùng nhập giá trị trong DonGia thì kết quả sẽ được cập nhật ngay trong ThanhTien.

Hướng dẫn: Khi người dùng nhập giá trị trong textbox DonGia bằng cách nhấn các phím số thì sự kiện nhấn phím xuất hiện (sự kiện nhấn phím có tên là onKeyUp), do vậy ta sẽ viết các lệnh đáp ứng với sự kiện này. Các lệnh ở đây chỉ có một do vậy nên đặt ngay trong định nghĩa thẻ, như sau: 

<html>
 
 <head>
 <title>Tinh tich</title>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 </head> 
 
 <body style="font-family:arial;background-color:lavender">
 <H1>Bạn hãy nhập vào số lượng và giá:</H1> 
 Số lượng: <input name="SoLuong">
 Đơn giá:<input name="DonGia" onKeyUp="ThanhTien.value=SoLuong.value*DonGia.value"> <HR>
 Thành tiền:<input name="ThanhTien"> USD 
 </body>
 
 </html>

Bài tập JavaScript 24: Tương tự như ví dụ 7, nhưng viết theo cách khai báo 3 (Các lệnh viết trong hàm). Kết quả vẫn cho ta như ví dụ 7: 

<html>
 
 <head>
 <title>Tinh tich</title>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <Script language = JavaScript>
 function TinhToan()
 {
 ThanhTien.value=SoLuong.value*DonGia.value ;
 // Hoặc bạn viết đầy đủ là:
 // window.ThanhTien.value = window.SoLuong.value*window.DonGia.value
 }
 </head>
 
 <body style="font-family:arial;background-color:lavender">
 <H1>Bạn hãy nhập vào số lượng và giá:</H1>
 Số lượng: <input name="SoLuong">
 Đơn giá: <input name="DonGia" onKeyUp="TinhToan();"> <HR>
 Thành tiền: <input name="ThanhTien"> USD
 </body>
 
 </html>

Bài tập JavaScript 25: Tạo ra một trang Web đăng nhập vào trang Vinaphone để cho phép người gửi tin nhắn đến điện thoại di động.

hướng dẫn: Để đăng nhập vào một trang Web nào đó, những thông tin bắt buộc thường là UserName và password (mật khẩu). Tuy nhiên, ngoài những thông tin bắt buộc đó chúng ta còn phải gửi các thông tin phụ. Những thông tin phụ này người dùng người dùng không phải nhập. (các thông tin phụ đó dưới đây sẽ được gạch chân)

Minh hoạ:

<HTML>
 
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Đăng nhập vào trang https://quantrimang.com</title>
 </HEAD>
 
 <BODY style="font-family:arial">
 <H2>Đăng nhập vào trang Quantrimang.com </H2><HR>
 <form action="https://quantrimang.com/account/login" method=post>
 User Name Password <BR>
 <input type="text" id = username name="username" size="20">
 <input type="text" id= password name="password" size="20">
 <input type="hidden" name="id" value="0" >
 <input type="hidden" name="language" value="en">
 <input type="submit" value="Đăng nhập - Login">
 </p>
 </form>
 </BODY>
 
 </HTML>

Các thẻ có thuộc tính type = "hidden" sẽ không được hiển thị trong trình duyệt, tuy nhiên khi chúng ta "Submit" thì các thông tin trong đó cũng được gửi đi. 

Bài tập JavaScript 26: Tạo một dòng văn bản “Welcome to CSS” có font chữ là Arial, in nghiêng và kích thước font chữ là 16 point.

<HTML>
 <HEAD> </HEADS>
 
 <BODY>
 <P style=“font-family:arial; font-style:italic; font-size:16pt”>Quantrimang.com chào bạn! </P>
 </BODY>
 
 </HTML>

Bài tập JavaScript 27: Tạo một textbox với màu nền là màu tím (magenta).

<HTML>
 
 <HEAD> </HEADS>
 <BODY>
 <input type = text style = “background-color:magenta”>
 </BODY>
 
 </HTML> 

Bài tập JavaScript 28: Đặt 3 file ảnh nền tương ứng vào tài liệu, vào textbox và vào textarea

<HTML>
 <HEAD> </HEAD>
 <BODY style="background-image:url('anh1.jpg');background-repeat:no-repeat">
 <input style = "background-image:url('anh2.jpg');background-repeat:repeat-x; awidth:100%">
 <P>
 <textarea style = "background-image:url('anh3.jpg');background-repeat:repeat-y" cols = 80 rows = 25>
 </textarea>
 </BODY>
 </HTML> 

*Ghi chú:

-Khi ta đặt là repeat-x thì ta có một dãy ảnh được xếp liên tiếp theo chiều ngang

-Khi ta đặt là repeat-y thì ta có một dãy ảnh được xếp liên tiếp theo chiều dọc 

Bài tập JavaScript 29: Tạo một dòng văn bản, chứa xâu: "Trang chủ QTM", trong đó từ "Trang chủ" có màu xanh (blue) và khi người dùng di chuyển chuột đến chữ "Trang chủ" thì chuột chuyển thành hình bàn tay, và khi chuột click lên chữ này thì trang https://quantrimang.com sẽ được mở.

<HTML>
 
 <HEAD> </HEAD>
 <BODY>
 <TITLE>Tạo liên kết và xử lý sự kiện</TITLE>
 <font style ="cursor:hand;color:blue" onclick="window.open('https://quantrimang.com');">Trang chủ </font> QTM
 </BODY>
 
 </HTML>

Ghi chú: Khi muốn áp dụng các kiểu cho một số phần tử các bạn chỉ cần viết : style="Tên_Thuộc_tính : Giá_Trị;" trong định nghĩa thẻ. Trong đó cặp "Tên_Thuộc_tính : Giá_Trị;" có thể viết như cột ví dụ đã chỉ ra ở các bảng trên. 

Nội dung trang Web của chúng ta bây giờ sẽ là: 

<html>
 
 <head>
 <title>Thêm kiểu cho phần tử</title>
 </head>
 
 <style type = "text/css">
 p {font-family:.vntimeH; font-size:20pt; color:violet}
 </style>
 
 <body>
 <p>Công nghệ</p>
 <p>Windows</p>
 <p>Linux</p>
 <p>Mac</p>
 <p>Mobile</p>
 </body>
 
 </html>

Bài tập JavaScript 30: Minh hoạ sự kiện di chuyển chuột vào phần tử.

Yêu cầu: Tạo một liên kết đến trang https://quantrimang.com/ bằng thẻ H2. Có màu nền là xanh, màu chữ là trắng. Khi chuột di chuyển đến thì đổi màu nền thành màu đỏ.

Hướng dẫn: Để đổi màu nền thành đỏ đối với thẻ H2 (hoặc thẻ bất kỳ) bạn viết:

document.all.LienKet.style.backgroundColor = ‘red’

Trong đó LienKet là giá trị của thuộc tính ID.

J Câu lệnh JavaScript này đặt ở đâu?

@ Theo như yêu cầu đầu bài là: “Khi chuột di chuyển…”. Do vậy câu lệnh này sẽ được đặt trong sự kiện di chuyển chuột đến (có tên là onMouseMove)

Minh hoạ:

<HTML>
 
 <HEAD>
 <TITLE>Hiệu ứng di chuyển chuột</TITLE>
 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
 </HEAD>
 
 <BODY>
 <h2 ID= "LienKet" STYLE="background-color:blue; color:white"
 onMouseMove="document.all.LienKet.style.backgroundColor = 'red'">
 Website công nghệ https://quantrimang.com/
 </h2>
 </BODY>
 
 </HTML>

Chú ý: Các thuộc tính trong bảng tra cứu “danh sách thuộc tính” nếu có chứa dấu gạch nối (ví dụ : background-color) thì khi viết trong JavaScript, bạn phải chuyển ký tự đứng ngay sau dấu gạch nối đó thành chữ hoa và bỏ dấu gạch nối đi. (Ví dụ từ background-color => backgroundColor). 

Bài tập JavaScript 31: Minh hoạ sự kiện di chuyển chuột vào và ra khỏi một phần tử.

Yêu cầu: Như bài 30, và thêm yêu cầu sau: Khi người dùng di chuyển chuột ra khỏi phần tử H2 đó thì đặt lại màu nền là màu xanh.

Hướng dẫn: Viết lệnh thay đổi màu nền thành xanh trong sự kiện di chuột ra ngoài.

Minh hoạ:

<HTML>
 
 <HEAD>
 <TITLE>Hiệu ứng di chuyển chuột Version 2</TITLE>
 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
 </HEAD>
 
 <BODY>
 <H2 ID= "LienKet" STYLE="background-color:blue; color:white"
 onMouseMove = "document.all.LienKet.style.backgroundColor = 'red' "
 onMouseOut = "document.all.LienKet.style.backgroundColor = 'blue' ">
 Website công nghệ https://quantrimang.com/
 </H2>
 </BODY>
 
 </HTML>

Bài tập JavaScript 32: Minh hoạ tạo một liên kết hoàn chỉnh đến một trang web

Yêu cầu: Như bài 31 nhưng khi người dùng click chuột thì mở trang https://quantrimang.com/. Và chuột có hình bàn tay.

Hướng dẫn: Để mở trang web bất kỳ bạn viết: window.open(‘Địa chỉ URL’). Lệnh mở này được đặt trong sự kiện click chuột (Vì theo yêu cầu: khi người dùng click chuột thì mới mở).

Minh hoạ: 

HTML>
 
 <HEAD>
 <TITLE>Hiệu ứng di chuyển chuột Version 2</TITLE>
 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
 </HEAD> 
 
 <BODY>
 <H2 ID="LienKet" STYLE="background-color:blue; color:white; cursor:hand"
 onMouseMove = "document.all.LienKet.style.backgroundColor = 'red';"
 onMouseOut = "document.all.LienKet.style.backgroundColor = 'blue';"
 onclick = "window.open('https://quantrimang.com/');" >
 Website công nghệ https://quantrimang.com/
 </H2>
 </BODY>
 
 </HTML>

Bài tập JavaScript 33: Minh hoạ tạo tầng trong IE

Tạo một tầng gồm có dòng chữ “Welcome to LAYER!”, màu đỏ, kích thước 40pt, font chữ Arial. Toàn bộ dòng chữ này có độ rộng (awidth) là 300px.

Hướng dẫn: Việc tạo tầng và đặt các thuộc tính có thể đặt thông qua định nghĩa STYLE.

Minh hoạ:

<HTML>
 
 <HEAD>
 <TITLE>Tạo tầng trong IE</TITLE>
 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
 </HEAD>
 
 <BODY>
 <DIV STYLE="position:absolute; color:red; font-family:arial; font-size:30pt;
 top: 50px; left: 50px; awidth:400px">
 Welcome to LAYER!
 </DIV>
 </body>
 
 </HTML>

Bài tập JavaScript 34: Minh hoạ việc ẩn và hiện tầng bằng câu lệnh JavaScirpt

Yêu cầu: tạo một dòng chữ “Các liên kết” bằng thẻ H2, màu nền là tím (magenta), màu chữ trắng (white). Và tạo một tầng có ID = LienKet, Trong tầng có một bảng gồm 2 hàng, 1 cột, nội dung của bảng chứa 2 liên kết (bạn có thể tạo bằng thẻ A HREF) đến các trang https://download.com.vn/, và https://meta.vn/, Ban đầu, tầng này ẩn (visible : ‘hidden’). Khi người dùng dùng di chuyển chuột đến thẻ H2 thì tầng này hiện. Còn khi người dùng click vào một trong 3 liên kết thì tầng này ẩn. 

Hướng dẫn: Để ẩn hay hiện tầng bạn viết:

document.all.LienKet.style.visibility = ‘visible’ (hoặc ‘hidden’)

Minh hoạ:

</HEAD>
 
 <BODY>
 <H2 STYLE="color:white; background-color:magenta; awidth:200px"
 onMouseOver = "document.all.LienKet.style.visibility = 'visible';">
 Các liên kết
 </H2>
 <DIV ID="LienKet" STYLE="position:absolute; font-family:arial; visibility: hidden;
 background-color:yellow; top: 40px; left: 10px; awidth:200px; ">
 <TABLE BORDER="0">
 <TR>
 <TD onClick = "document.all.LienKet.style.visibility = 'hidden';" >
 <A HREF = "https://download.com.vn/">Website tải phần mềm</A>
 </TD>
 </TR>
 <TR>
 <TD onClick = "document.all.LienKet.style.visibility = 'hidden';">
 <A HREF = "https://meta.vn/">Website TMĐT</A>
 </TD>
 </TR>
 </TABLE>
 </DIV>
 </body>
 
 </HTML>

Bài tập tự giải 34': Tạo một hệ thống menu phân tầng như hình:

Yêu cầu tạo menu phân tầng bằng JavaScript

Lời giải mẫu:

<HTML> <HEAD> <TITLE>Tạo Menu trong IE - Sử dụng TẦNG và JavaScript</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> </HEAD>   <STYLE TYPE="TEXT/CSS"> .MenuBar{background-color:blue; color:white; font-family:arial; font-size:16pt;awidth:150px; cursor:hand} .Menu { background-color: yellow; color: white; position: absolute; top : 40; visibility : hidden} </STYLE> <SCRIPT language="JavaScript"> function AnCacMenu() // Hàm Ẩn các Menu có tác dụng làm ẩn các tầng mỗi khi được gọi { document.all.Menu1.style.visibility = 'hidden'; document.all.Menu2.style.visibility = 'hidden'; document.all.Menu3.style.visibility = 'hidden'; } </SCRIPT>   <BODY onClick = "AnCacMenu()">   <DIV CLASS="Menu" ID="Menu1" style = "left:10"> <a href = "https://download.com.vn/">Website tải phần mềm</a><br> <a href = "https://meta.vn/">Website TMĐT</a> </DIV>   <DIV CLASS="Menu" ID="Menu2" style = "left:150;"> <a href = "https://quantrimang.com/">Website công nghệ</a> <br> <a href = "https://vndoc.com/">Website học tập</a> </DIV>   <DIV CLASS="Menu" ID="Menu3" style = "left:250"> <a href = "https://www.hust.edu.vn/">Đại học Bách khoa Hà Nội</a> <br> <a href = "https://tmu.edu.vn/">Đại học Thương Mại</a> <br> <a href = "https://vnu.edu.vn/">Đại học Quốc gia</a> </DIV> <span CLASS="MenuBar" onMouseMove="AnCacMenu(); document.all.Menu1.style.visibility = 'visible'"> Các liên kết </span> <span CLASS="MenuBar" onMouseMove="AnCacMenu(); document.all.Menu2.style.visibility = 'visible'">
 Tin tức
 </span>
 
 <span CLASS="MenuBar" onMouseMove="AnCacMenu(); document.all.Menu3.style.visibility = 'visible'">
 Các hoạt động
 </span>
 </body>
 
 </HTML>
 
 

Bài tập JavaScript 35: Minh hoạ thay đổi thuộc tính innerText

Yêu cầu: Tạo một dòng chữ "I am having fun" thành "This is great fun" khi người dùng click chuột.

Hướng dẫn: Bạn có thể dùng bất kỳ thẻ gì (thẻ H, thẻ P v.v...) để tạo dòng chữ ở trên. Do đầu bài yêu cầu là chỉ thay đổi dòng văn bản, do vậy chúng ta sẽ thay đổi thuộc tính innerText, dòng lệnh này sẽ đặt trong sự kiện onClick.

Minh hoạ: 

<html>
 
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 </head>
 
 <body>
 <h2 id="ID1" onClick="document.all.ID1.innerText='Thật thú vị!'">Website Quantrimang.com</h2>
 </body>
 
 </html>

Bài tập JavaScript 36: Minh hoạ thay đổi thuộc tính innerHTML

Yêu cầu: Tạo một dòng chữ "Click vào đây". Khi người dùng click chuột vào thì dòng chữ đó biến thành nút có nhãn là "OK".

Hướng dẫn:

  • Bạn có thể sử dụng bất kỳ thẻ nào để hiển thị dòng chữ "Click vào đây"
  • Trong sự kiện click chuột (onMouseMove) bạn viết lệnh thay nội dung trong thẻ bằng nội dung mới (Nội dung này là thẻ tạo nút).

Minh hoạ:

<html>
 
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 </head>
 
 <body>
 <h2 id="ID1" onClick="document.all.ID1.innerHTML='<input type=button value = OK>'">
 Click vào đây
 </h2>
 </body>
 
 </html>

Bài tập JavaScript 37: Minh hoạ thay thế thuộc tính outerText.

Yêu cầu: Tạo một nút có nhãn là "Open". Khi người dùng click vào nút này thì mở trang https://quantrimang.com/, trong một cửa sổ mới và dòng nút đó sẽ thay bằng dòng chữ "Trang này đã thăm".

Hướng dẫn:

  • Để mở một trang web trong một cửa sổ mới, bạn viết: window.open("Địa chỉ URL của trang cần mở", "_Blank")
  • Thay thế nút bằng một dòng chữ thông qua thay đổi thuộc tính outerText của nút.

Minh hoạ: 

<html>
 
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 </head>
 
 <SCRIPT language="JavaScript">
 function ThayDoi()
 {
 window.open("https://quantrimang.com/","_blank");
 document.all.Nut1.outerText="Trang này đã thăm";
 }
 </SCRIPT>
 
 <body>
 <INPUT id="Nut1" type="button" value="Open" onClick="ThayDoi();">
 </body>
 
 </html>

Bài tập JavaScript 38: Minh hoạ thay đổi thuộc tính outerHTML

Yêu cầu: Tạo một dòng chữ "Nhấp vào đây!" có màu xanh, kích cỡ H1. Khi người dùng click vào dòng chữ này thì thay bằng một liên kết đến trang https://quantrimang.com/

Hướng dẫn: Do ở đây khi người dùng click vào dòng chữ thì thay thế bằng một liên kết nên thuộc tính cần thay đổi sẽ là outerHTML. Câu lệnh thay đổi sẽ được đặt trong sự kiện click chuột.

Minh hoạ:

<html>
 
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 </head>
 
 <SCRIPT language="JavaScript">
 function ChenLienKet()
 {
 document.all.LienKet.outerHTML='<A HREF = "https://quantrimang.com/">Trang QTM</A>' ;
 }
 </SCRIPT>
 
 <body>
 <h1 id="LienKet" style="color:blue" onClick="ChenLienKet()">Nhấp vào đây!</h1>
 </body>
 
 </html>

Bài tập JavaScript 39: Minh họa việc định vị động trong IE

Yêu cầu: Tạo một nút có nhãn là "Đăng ký". Khi chuột di chuyển trong nút này thì hiển thị dòng nhắc là "Đăng ký địa chỉ email mới" có màu nền là vàng tại vị trí của con chuột. Khi chuột di chuyển ra ngoài thì dòng nhắc ẩn đi.

Hướng dẫn: Bạn tạo ra một tầng chứa dòng chữ "Đăng ký hòm thư mới" có màu nền là vàng. Khi chuột di chuyển đến (onMouseMove) thì đặt thuộc tính visibility là 'visible' để cho hiện tầng đó và khi di chuyển chuột ra ngoài (onMouseOut) thì đặt lại thuộc tính visibility là 'hidden' để ẩn tầng. Lưu ý, vị trí của chuột được lưu trong thuộc tính event.clientX và event.clientY. Bạn sẽ gán vị trí này của chuột cho 2 thuộc tính pixelLeft và pixelTop để định vị tầng.

Minh hoạ:

<html>
 
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 </head>
 
 <SCRIPT language="JavaScript">
 function HienThi()
 {
 document.all.Tang1.style.pixelLeft = event.clientX;
 document.all.Tang1.style.pixelTop = event.clientY;
 document.all.Tang1.style.visibility = 'visible';
 }
 function AnTang() // Ẩn Tầng Tang1
 {
 document.all.Tang1.style.visibility = 'hidden';
 }
 </SCRIPT>
 
 <BODY>
 <INPUT type="button" value="Đăng ký"
 onMouseMove="HienThi();"
 onMouseOut="AnTang()"> 
 <DIV id= Tang1 style="position:absolute; visibility: hidden; background-color:yellow">
 Đăng ký địa chỉ email mới
 </DIV>
 </BODY>
 
 </html>

Bài tập JavaScript 40: Minh hoạ nội dung trong Netscape

Yêu cầu: Tạo một tầng có tên là Tang1, một nút nhấn có nhãn là "Load trang Web" và một hộp text có tên là DiaChi. Khi người dùng nhập địa chỉ vào trong hộp text và nhấn nút "Load trang web" thì nội dung của trang đó sẽ được nạp vào tầng Tang1.

Hướng dẫn:

- Dùng thẻ LAYER để tạo tầng và đặt tên cho nó là Tang1

- Viết trong sự kiện onCLick của nút "Nạp trang web" câu lệnh nạp tài liệu vào tầng. Cú pháp nạp tài liệu vào một tầng trong Netscape như sau:

document.<Tên tầng>.src = "Địa chỉ trang cần nạp"

Trong trường hợp này sẽ là:

document.Tang1.src = document.form1.DiaChi.value 

Minh hoạ:

<html>
 
 <head>
 <TITLE>Hiển thị tooltip</TITLE>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 </head>
 
 <body>
 <LAYER name="Tang1">
 <h1> Tầng này dùng để hiển thị trang Web bạn gõ trong hộpText!</h1>
 </LAYER>
 <FORM name="Form1">
 <INPUT type="text" name="DiaChi">
 <INPUT type="button" value = 'Load' onClick="document.Tang1.src = document.form1.DiaChi.value">
 </FORM>
 </body>
 
 </html>

BÀI TẬP JAVASCRIPT TỰ GIẢI

Bài số 1:

Tạo một tầng có chứa dòng chữ "Hello", kích thước H1. và một nút nhấn có nhãn là "Thay đổi". Khi người dùng click vào nút này thì yêu cầu người dùng nhập vào một xâu, sau đó thay nội dung trong thẻ H1 bằng xâu nhập vào này (Theo 4 cách: thay thuộc tính innerText, innerHTML, outerText, outerHTML).

Bài số 2:

Tạo một thẻ H1, màu chữ xanh dùng để hiển thị thời gian của hệ thống (gồm giờ:phút:giây).

Gợi ý: Viết hàm CapNhat để lấy giờ:phút:Giây trong máy tính sau đó gán cho thuộc tính innerText của thẻ H1. Sử dụng hàm setInterval("CapNhat();", 1000) để liên tục cập nhật thời gian theo từng giây.

Bài số 3: Tạo 2 tầng trong IE, mỗi tầng chứa một bức ảnh. Tầng thứ nhất chạy từ trái sang phải màn hình, tầng thứ hai chạy từ trên xuống dưới màn hình.

Gợi ý: Sử dụng 2 hàm setInterval để gọi 2 hàm di chuyển 2 tầng.

Bài số 4: Tạo một tầng chứa 3 liên kết. Chuột click tại vị trí nào thì tầng sẽ được đặt tại vị trí đó. Gợi ý: Viết lệnh trong sự kiện onClick của thẻ BODY.

Bài số 5: Tạo một form đăng ký E-Mail tương tự như của Yahoo (Bạn chỉ cần tạo một số phần tử, không cần tạo hết). Mỗi khi người dùng di chuyển chuột đến một phần tử nào đó thì hiển thị một lời chú thích bằng Tiếng việt. (Xem Bài số 5)

Bài số 6: Tạo 3 tầng (Trong Netscape), mỗi tầng nạp một trang tương ứng như sau: https://vndoc.com, https://quantrimang.com và https://meta.vn.

Bài số 7: Tạo một tầng chứa một bức ảnh, một nút có nhãn là "Di chuyển". Khi người dùng click vào nút này thì bức ảnh sẽ di chuyển chéo từ góc trên bên phải xuống góc dưới bên trái của màn hình. Gợi ý: Tăng dần pixelTop, giảm pixelLeft. 

Bài số 8: Hãy tạo ra trang Web có giao diện như sau: 

Yêu cầu:

  • Khi người dùng di chuyển chuột đến phần tử nào thì hiển thị dòng nhắc dưới thanh trạng thái để hướng dẫn người dùng. Ví dụ: Khi người dùng đưa chuột vào trong ô textbox User Name thì thì hiển thị dưới thanh trạng thái là: "Nhập mã người dùng", hay khi người đưa chuột đến nút "Đăng ký" thì hiển thị dòng nhắc: "Gửi thông tin đi để đăng ký" v.v...

Hướng dẫn: Nút đăng ký nên là nút thường, tức là tạo bằng thẻ:

<input type = button value = "Đăng ký">

Bài số 9: Có giao diện như bài 1, nhưng yêu cầu như sau:

  • Khi gửi thông tin đi, cần kiểm tra xem nội dung người dùng gõ trong ô Password với textbox trong ô "Gõ lại password" có giống nhau hay không? Nếu bằng nhau thì mới gửi (Submit) đi, còn nếu không bằng thì thông báo là "Password phải giống nhau"
  • Khi gửi thông tin, cần kiểm tra ngày sinh, tháng sinh phải hợp lệ. (Tức ngày phải nhỏ hơn 32, tháng phải nhỏ hơn 13) 

Hướng dẫn:

Nút đăng ký nên là nút thường, tức là tạo bằng thẻ:

<input type = button value = "Đăng ký" onClick = "DangKy();">

Trong đó Hàm DangKy() sẽ kiểm tra dữ liệu hợp lệ và khi dữ liệu nhập vào đúng đắn thì gửi đi bằng cách gọi phương thức submit của đối tượng document, như sau: document.submit();

Bài số 10:

Làm tương tự bài tập 7 và 8, nhưng thêm yêu cầu: Khi người dùng nhập hoặc số lượng, hoặc đơn giá thì hãy tính luôn ô textbox thành tiền.

Hướng dẫn: Viết lệnh tính thành tiền trong cả 2 sự kiện onKeyUp của cả hai textbox số lượng và textbox đơn giá.

*** Lưu ý: Trước khi tính tích thì cần phải kiểm tra xem dữ liệu trong hai textbox đã có hay chưa, nếu một ô chưa nhập gì thì chưa tính.

Bài số 11: Hãy tạo một menu đặt theo chiều dọc gồm 4 mục như sau:

Giới thiệu

Tin tức

Sản phẩm

Trợ giúp

Yêu cầu: 4 mục này có màu nền là xanh, màu chữ là vàng (yellow). Khi người dùng di chuyển đến mục nào thì mục đó có màu nền là màu đỏ. Khi di chuyển chuột ra khỏi thì màu nền trở lại màu xanh.

Khi người dùng click vào thì mở ra trang tương ứng là https://download.com.vn, https://vndoc.com, https://meta.vn và https://quantrimang.com.

Gợi ý: Làm tương tự như bài tập mẫu, nhưng tạo ra 4 thẻ H2.

Bài số 11: Hãy tạo một menu gồm 4 mục như ở trên nhưng theo chiều ngang,

Hướng dẫn: Nếu bạn dùng thẻ H2, thì mỗi mục sẽ tự động được đặt riêng trên một dòng. Để có thể đặt nhiều mục trên cùng một dòng, bạn có thể tạo một bảng có một hàng và nhiều cột. Mỗi mục bây giờ sẽ được đặt trong một thẻ <TD>. Để thay đổi kích thước, màu nền, màu chữ v.v.. bạn cũng sử dụng STYLE: <TD style = “color: white” ……

Hoặc cách thứ hai là bạn sử dụng thẻ <Span>. Ví dụ:

<Span style = “color:white; background-color:blue; cursor:hand; font-size:16pt”
onClick = “window.open(‘https://quantrimang.com/’);” >
Trang QTM
</Span>

Ngoài ra, QTM còn có bài tập C++, bài tập Python, bài tập Java các bạn đừng bỏ qua nếu đang học các ngôn ngữ lập trình này nhé. 

0