Không được xác định tại HTMLAnchorElement onclick

Đôi khi, bạn có thể gặp lỗi hàm JavaScript không được xác định giống như sau

doAction();

Uncaught ReferenceError: doAction is not defined

Uncaught ReferenceError: doAction is not defined
2 như trong trường hợp trên được tạo ra khi bạn gọi thứ gì đó không được định nghĩa trong JavaScript. Hãy để tôi chỉ cho bạn một số điều bạn có thể làm để sửa lỗi

Đảm bảo chức năng được xác định bên trong tập lệnh của bạn

Một trong những lỗi nhỏ có thể gây ra lỗi đó là bạn chưa định nghĩa đúng hàm. Bạn cần xác định chức năng bằng cách sử dụng từ khóa

Uncaught ReferenceError: doAction is not defined
3

function doAction() {
  // your function code here
}

Hoặc sử dụng cú pháp hàm mũi tên như sau

const doAction = () => {
  // your function code here
};

Xin lưu ý rằng các hàm được xác định thông qua các biểu thức hàm phải được xác định trước khi gọi. Biểu thức hàm là các hàm mà bạn đã xác định thông qua từ khóa biến như sau

var fnAction = function () {};
// or
let fnAction = () => {};

Từ đoạn mã ví dụ trên, biến

Uncaught ReferenceError: doAction is not defined
4 sẽ được nâng lên nhưng phần khai báo hàm thì không, vì vậy nó sẽ không được xác định như hình bên dưới

________số 8_______

Xem thêm. Hành vi nâng JavaScript

Đó là lý do tại sao nên xác định hàm trước khi gọi nó.

Khi bạn đã định nghĩa hàm, hãy thử gọi nó ngay bên dưới phần khai báo để xem nó có hoạt động không

function doAction() {
  // your function code here
}

doAction(); // test the function call

Nếu nó đang chạy mà không có bất kỳ lỗi nào, thì bạn có thể có một số dòng mã sau khi khai báo khiến tập lệnh bị trục trặc

Đảm bảo toàn bộ tập lệnh không có lỗi

Nếu bạn đang đặt chức năng vào tập lệnh và gọi nó từ thẻ HTML, bạn cần đảm bảo rằng toàn bộ tập lệnh không có lỗi hoặc chức năng sẽ không được tải

Ví dụ, hãy chú ý cách gọi thêm

Uncaught ReferenceError: doAction is not defined
5 ngay bên cạnh cuộc gọi
Uncaught ReferenceError: doAction is not defined
6


<html>
  <head>
    <title>Function not definedtitle>
  head>
  <body>
    <button id="action" onclick="fnAction()">Click mebutton>
    <script type="text/javascript">
      document.getElementById("action")); // extra ')' here
      function fnAction(){
        console.log("Executing action");
      }
    script>
  body>
html>

Mặc dù không có lỗi trong mã

Uncaught ReferenceError: doAction is not defined
7, một lỗi trong bất kỳ phần nào của tập lệnh sẽ khiến trình duyệt bỏ qua phần còn lại của tập lệnh đó. Bạn cần sửa lỗi trước để trình duyệt có thể thực thi phần còn lại của mã

Một cách để xem bạn có gặp lỗi nào không là chạy trang HTML và kiểm tra trên bảng điều khiển như sau

JavaScript error on the consoleLỗi JavaScript trên bảng điều khiển

Bạn có thể thấy

Uncaught ReferenceError: doAction is not defined
2 tự sửa khi bạn sửa lỗi JavaScript từ tập lệnh của mình

Đảm bảo tập lệnh được tải trước cuộc gọi

Cuối cùng, lỗi chức năng không được xác định cũng có thể do gọi chức năng trước khi tập lệnh được tải vào trình duyệt. Giả sử bạn có một tệp JavaScript được tách ra khỏi tệp HTML của mình như sau

// script.js
function fnAction() {
  console.log("executing action");
}

Sau đó, bạn tải tập lệnh vào tệp HTML của mình, nhưng bạn gọi hàm

Uncaught ReferenceError: doAction is not defined
4 trước khi tải tập lệnh như sau