Ví dụ về chuyển đổi hình tự động với Javascript

Ví dụ về chuyển đổi hình tự động với Javascript

Sau một số bài viết giới thiệu về DOM có lẽ cũng nên làm một vài ví dụ cho hứng khởi chứ cứ lý thuyết hoài cũng ngán, nhưng có lý thuyết thì mới có thực hành và lý thuyết vững thì thực hành mới thành công. Từ giễ tới khó luôn là phương châm đúng, sau khi lục lọi trong mớ ví dụ đã làm tôi đã tìm được một ví dụ có thể nói là rất giễ thực hành. Ví dụ sau sẽ thực hiện chức năng tự động chuyển hình ảnh theo một thời gian định trước. Tuy ví dụ sau không thực sự ứng dụng nhiều trong thực tế bởi vì đây chỉ là một ví dụ đơn giản, nhưng ví dụ này cũng là tiêu biểu để bạn hiểu rõ về phương thức setTimeout() mà tôi có giới thiệu ở bài trước.

Đầu tiên chúng ta cần chuẩn bị mốt số hình ảnh làm ví dụ. Điều quan trọng là bạn phải đảm bảo rằng các hình ảnh nằm trong cùng thư mục và tên của chúng phải cùng mẫu theo một quy tắc như ví dụ sau tôi chuẩn bị 4 hình với tên là image1.jpg, image2.jpg, image3.jpg, và image4.jpg.

Trước khi tiến hành làm code thì chúng ta phải phân tích giải thuật của ví dụ trước

Giải thuật

Xây dựng một hàm chuyển đổi hình ảnh, chỉ cần thay thế số cuối cùng trong tên hình ảnh, sau khi thay hình thì sẽ gọi lại hàm thay hình một lần nữa sau thời gian nhất định, lợi dụng việc gọi lại hàm chúng ta dùng một biến đếm tăng dần để làm số thay thế cho phần tên hình ảnh, nếu thay đến hình ảnh cuối cùng thì không thay nữa vậy phải có một điều kiện dừng nằm ngay trong hàm đổi hình.

code

Trong HTML có một hình ảnh ban đầu như sau:

<img name="myimage" src="images/image1.jpg" />

Xây dựng hàm chuyển đổi hình ảnh:

<script type="text/javascript">
window.onload = function(){
  setTimeout("switchImage()", 3000);
}
var current = 1;
var numIMG = 4;
function switchImage(){
  current++;
  // Thay thế hình
  document.images['myimage'].src ='images/image' + current + '.jpg';
  // Gọi lại hàm nếu thõa đk
  if(current < numIMG){
   setTimeout("switchImage()", 3000);
  }
}
</script>

Dòng 5 tạo biến current để làm số thay đổi trong tên hình, dòng 6 tạo biến numIMG để lưu thông tin về tên hình cuối cùng là tên hình có số 4 cuối. Hàm switchImage() dùng để chuyển đổi hình ảnh, trong hàm này đầu tiên tăng biến current cộng thêm 1 để dùng làm tên hình sẽ thay, dòng 10 chính là phương pháp dùng DOM cũ để gán giá trị cho thuộc tính src của hình ảnh (trong DOM thì hình ảnh sẽ là một mảng images và chúng ta có thể dùng tên của hình ảnh làm chỉ mục cho hình ảnh đó) ở đây chúng ta đã thay thế hình ảnh bằng một đường dẫn tới hình ảnh mới. Phương thức setTimeout("switchImage()", 3000)  chỉ chạy khi thỏa điều kiện là chưa tiến đến hình cuối cùng, phương thức setTimeout("switchImage()", 3000) sẽ gọi hàm switchImage() sau 3s.

window.onload chính là sự kiện khi toàn bộ trang của chúng ta được tải xong, sau khi tải xong thì chạy phương thức setTimeout("switchImage()", 3000) để gọi hàm switchImage() sau 3s.

Hàm thực hiện chuyển đổi hình ảnh trên sẽ dừng lại khi hình ảnh cuối cùng được thay nhưng nếu bạn muốn hình ảnh thay từ 1 tới 4 rồi sau đó lại tiếp tục từ 1 tới 4 nữa, cứ như thế cho tới chết thì bạn chỉ cần thay đoạn code

if(current < numIMG){
  setTimeout("switchImage()", 3000);
}

Thành

if(current == numIMG){current =0;}
setTimeout("switchImage()", 3000);

Nếu bạn đã học một ngôn ngữ lập trình nào đó thì sẽ hiểu ngay đây là phương pháp lập trình bằng đệ quy.

Vậy là chúng ta đã thực hiện xong một ví dụ đơn giản, tôi đã cố gắng giải thích cho bạn hiểu nhưng nếu bạn còn chưa hiểu lắm thì bạn hãy tìm hiểu thông tin về phương pháp lập trình đệ quy. Có một điều bạn thấy setTimeout là một phương thức nhưng đằng trước nó chúng ta không cần ghi đối tượng bởi đơn giản đây là phương thức của đối tượng window và bạn không cần phải ghi đối tượng window trước cũng được

Bạn thấy bài viết này như thế nào?: 
Average: 8.9 (7 votes)
Ảnh của Khanh Hoang

Khanh Hoang - Kenn

Kenn is a user experience designer and front end developer who enjoys creating beautiful and usable web and mobile experiences.

Bình luận (0)

 

Add Comment

Filtered HTML

  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Các thẻ HTML được chấp nhận: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Tự động ngắt dòng và đoạn văn.

Plain text

  • No HTML tags allowed.
  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Tự động ngắt dòng và đoạn văn.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
SVN

Giới thiệu hệ thống quản lí phiên bản

Version control (aka Revision control or Source control) is the management of changes in computer files.

Editing, Sharing Photos Becomes Easier On Android Phones Through Adobe Photoshop

Editing, Sharing Photos Becomes Easier On Android Phones Through Adobe Photoshop Express

There are tons of free photo editing apps provided by the Android Market.

14 lý do nên tránh: Bernt’s Drupal Gotchas

14 lý do nên tránh: Bernt’s Drupal Gotchas

During my first year of being a full time Drupal developer, I ran into quite a few stumbling blocks. Here are 14 of them that you don't want to trip over too - whether you are new to Drupal or a seasoned expert.

Công ty diệt chuột T&C

 

Diet con trung