Return to Video

Adding an event listener (Video Version)

  • 0:01 - 0:06
    Tôi đã tạo một trang này để ta nghịch.
  • 0:06 - 0:09
    Bây giờ thì trang này còn nhạt nhẽo thật.
  • 0:09 - 0:12
    Chưa có nội dung gì cả, và nút này
  • 0:12 - 0:16
    không làm gì cả khi tôi click vào.
  • 0:16 - 0:19
    Ta sẽ thay đổi nút này đi để
  • 0:19 - 0:21
    khi người dùng click vào nút, dòng chữ
  • 0:21 - 0:24
    ở trong nút sẽ thay đổi.
  • 0:24 - 0:28
    Việc đầu tiên là tìm element mà
  • 0:28 - 0:30
    sẽ kích hoạt event để ta listen.
  • 0:30 - 0:33
    Trong ví dụ này thì element đó chính là nút này,
  • 0:33 - 0:35
    Nút này có id="clicker",
  • 0:35 - 0:40
    nên ta sẽ tạo một biến tên là clickerButton
  • 0:40 - 0:45
    và dùng document.getElementById
  • 0:46 - 0:49
    để lưu nút kia vào biến này.
  • 0:49 - 0:53
    Bước tiếp theo là viết một hàm
  • 0:53 - 0:56
    để trình duyệt còn gọi lên khi event này xảy ra.
  • 0:58 - 1:03
    Tôi đặt hàm đó là onButtonClick và
  • 1:04 - 1:07
    tạm thời tôi cứ để hàm đó trống không thế,
  • 1:07 - 1:09
    đương nhiên ta sẽ phải viết gì đó
  • 1:09 - 1:12
    trong hàm đó, không thì đúng là vô dụng.
  • 1:12 - 1:15
    Để thay đổi nút trên button, ta có thể dùng
  • 1:15 - 1:19
    biết clickerButton và gán giá trị vào textContent của biến đó.
  • 1:20 - 1:24
    đặt là
  • 1:24 - 1:26
    Thế là xong nút này rồi!
  • 1:27 - 1:29
    Giờ thì chưa có gì lắm, nhưng ta
  • 1:29 - 1:31
    có thể viết đủ thứ phức tạp hơn nữa khi quen rồi.
  • 1:33 - 1:38
    Cho đến giờ thì code của ta mới chỉ gán giá trị vào các biến,
  • 1:38 - 1:41
    vẫn chưa có gì lắm xảy ra khi tôi click vào nút.
  • 1:42 - 1:45
    Bước cuối cùng là ghép 2 cái kia lại,
  • 1:45 - 1:49
    tức là code cho trình duyệt biết rằng cần phải gọi
  • 1:49 - 1:52
    hàm kia mỗi khi có click event
  • 1:52 - 1:55
    với nút đó.
  • 1:55 - 1:57
    Ta có thể gọi hàm
  • 1:57 - 2:01
    addEventLisstener của button đó:
  • 2:01 - 2:06
    clickerButton.addeventlistener(),
  • 2:06 - 2:11
    Ta sẽ phải nhập 2 argument vào trong hàm này.
  • 2:11 - 2:15
    Đầu tiên là tên của event, là "click",
  • 2:15 - 2:18
    tiếp theo là tên hàm mà ta muốn gọi
  • 2:18 - 2:22
    khi có event "click", tức là onButtonClick.
  • 2:23 - 2:27
    Giờ bạn hãy dừng video này lại một chút để click thử vào nút đó xem
  • 2:29 - 2:30
    Có được không?
  • 2:30 - 2:32
    Tôi mong là được. Với tôi thì có được.
  • 2:33 - 2:36
    Ta sẽ xem lại một chút qua cách hoạt động của hàm này,
  • 2:36 - 2:38
    vì nó cũng hơi phức tạp.
  • 2:38 - 2:41
    ta gọi hàm này là eventLister function,
  • 2:41 - 2:46
    cũng gọi là callback function, vì đấy là nhiệm vụ của nó.
  • 2:47 - 2:51
    Ta chỉ gọi hàm đó lên khi có event xảy ra,
  • 2:51 - 2:56
    còn khi trang web mới được load lên thì chưa gọi.
  • 2:56 - 2:58
    Còn nếu ta muốn gọi một hàm ngay khi trang web đang load,
  • 2:58 - 3:02
    thì ta sẽ phải viết thêm một dòng thế này...
  • 3:03 - 3:06
    Bạn để ý có dấu ngoặc đơn () ở cuối hàm.
  • 3:06 - 3:10
    Khi trực tiếp gọi một hàm thì phải có dầu ngoặc đơn,
  • 3:10 - 3:14
    còn khi không có dấu ngoặc thì tức là không trực tiếp gọi hàm đó,
  • 3:14 - 3:16
    mà chỉ là cái tên của hàm để được gọi sau này thôi,
  • 3:16 - 3:19
    như là ở trong argument này đây,
  • 3:19 - 3:20
    như vậy chỉ là báo cho chương trình biết
  • 3:20 - 3:22
    "Này, đây là tên hàm mà ta sẽ
  • 3:22 - 3:25
    cần gọi lên về sau, nhưng bây giờ thì chưa trực tiếp gọi."
  • 3:28 - 3:31
    Bạn nhớ đừng viết dấu ngoặc đơn vào
  • 3:31 - 3:33
    sau tên hàm này, vì
  • 3:33 - 3:34
    như thế tức là bạn sẽ nhập vào
  • 3:34 - 3:38
    giá trị được trả về của hàm đó, chứ không phải là chính hàm đó.
  • 3:38 - 3:39
    Nếu tôi thêm dấu ngoặc vào đây,
  • 3:39 - 3:42
    tôi sẽ thấy dòng chữ trên nút kia thay đổi ngay khi trang web đang load,
  • 3:42 - 3:45
    chứ không đổi về sau.
  • 3:45 - 3:47
    Để chữa thì tôi chỉ cần bỏ dấu ngoặc đơn
    To fix that, I just remove
  • 3:47 - 3:51
    kia đi, và giờ hàm này
  • 3:51 - 3:53
    sẽ chỉ được gọi lên khi click vào nút.
  • 3:54 - 3:56
    Một cách khác để lập trình cái vừa rồi là
  • 3:56 - 4:01
    nhập vào một hàm vô danh trong này.
  • 4:02 - 4:06
    Hàm vô dánh tức là một hàm không có tên
    An anonymous function is one
  • 4:06 - 4:10
    để gọi, mà chỉ có một dòng lệnh ở trong thôi.
  • 4:11 - 4:15
    Tôi viết một dòng addEventListener
  • 4:15 - 4:18
    ở dưới cho bạn xem và so sánh
  • 4:18 - 4:20
    thì sẽ hiểu ngày thôi.
  • 4:20 - 4:23
    Tôi xoá tên hàm này đi, và
  • 4:23 - 4:26
    viết thẳng định nghĩa của hàm vào luôn,
  • 4:26 - 4:31
    viết vào đây thế này.
  • 4:32 - 4:37
    2 dòng code này có chức năng giống hệt nhau.
  • 4:38 - 4:40
    Gần như là giống hệt.
  • 4:40 - 4:42
    Chúng đều thực hiện một hàm
  • 4:42 - 4:44
    có code giống hệt nhau.
  • 4:44 - 4:46
    Khác một chút là dòng ở trên
  • 4:46 - 4:50
    nhập vào tên của một hàm mà ta đã định nghĩa ở trên,
  • 4:50 - 4:55
    còn hàm dưới thì định nghĩa thẳng hàm cần gọi ở trong luôn,
  • 4:55 - 4:59
    ngay chỗ nhập argument vào.
  • 4:59 - 5:03
    Cả 2 cách đều được. Hầu hết các lập trình viên thường dùng hàm có tên
  • 5:03 - 5:04
    vì như thế dễ đọc code hơn
  • 5:04 - 5:07
    và cũng dễ sửa lỗi hơn,
  • 5:07 - 5:10
    và cũng có thể gọi tên hàm đó
  • 5:10 - 5:13
    ở khác chỗ khác với các event khác nữa.
  • 5:13 - 5:16
    Bạn muốn dùng cách nào cũng được,
  • 5:16 - 5:18
    chỉ đừng dùng cả 2 cùng lúc, vì như thế
  • 5:18 - 5:19
    thì trình duyệt sẽ gọi cả
  • 5:19 - 5:22
  • 5:22 - 5:26
    gọi 2 lần chẳng để làm gì cả.
  • 5:26 - 5:29
    Tôi sẽ xoá hàm vô danh này đi
  • 5:29 - 5:32
    bởi vì tôi thích kiểu ở trên hơn.
  • 5:32 - 5:33
    Giờ bạn có thể làm rất nhiều thứ
  • 5:33 - 5:35
    với event listner.
  • 5:35 - 5:38
    Bạn có thể lập trình để dịch chuyển các element trên trang web,
  • 5:38 - 5:40
    bạn có thể viết listener cho nhiều event khác nhau,
  • 5:40 - 5:41
    ta sẽ học về cái đó trong bài tới,
  • 5:41 - 5:43
    và bạn cũng có thể làm việc với DOM
  • 5:43 - 5:46
    như ta đã học trong các bài trước.
  • 5:46 - 5:48
    Bạn không chỉ có thể thay đổi các element
    And you don't just have
  • 5:48 - 5:50
    mà người dùng động đến,
  • 5:50 - 5:53
    mà còn thay đổi element nào trên trang web cũng được.
  • 5:53 - 0:00
    Bạn cứ thử xem còn có thể làm được những gì.
Title:
Adding an event listener (Video Version)
Description:

more » « less
Video Language:
English
Duration:
05:57

Vietnamese subtitles

Incomplete

Revisions