Hướng dẫn javascript function not defined external js - hàm javascript không được xác định js bên ngoài

4

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang cố gắng gọi một hàm trong trang HTML từ tệp index.js được tải bên ngoài, nhưng tôi luôn nhận được

Uncaught ReferenceError: displayy is not defined

Bên trong trang HTML của tôi:

 


    $[ document ].ready[function[] {
       displayy[];
    }];

Tệp index.js:

$[ document ].ready[function[] {
    alert['loaded'];
      function displayy[] {
    alert['executed'];
    } 
 }];

Tôi cũng đã thử:


    window.onload = function[] {
        displayy[];
    };




    document.addEventListener["DOMContentLoaded", function[event] {
        displayy[];
    }];

Đã hỏi ngày 23 tháng 3 năm 2017 lúc 20:29Mar 23, 2017 at 20:29

Bogdan Danielbogdan DanielBogdan Daniel

2.55910 Huy hiệu vàng39 Huy hiệu bạc73 Huy hiệu đồng10 gold badges39 silver badges73 bronze badges

9

Bạn không cần phải chạy lại

 


    $[ document ].ready[function[] {
       displayy[];
    }];

1 từ tập lệnh. Các tác phẩm sau:

$[document].ready[function[] {
      alert['loaded'];
      displayy[];
      function displayy[] {
        alert['executed'];
      } 
}];

Đã trả lời ngày 23 tháng 3 năm 2017 lúc 20:41Mar 23, 2017 at 20:41

Pritam Banerjeepritam BanerjeePritam Banerjee

17.1k10 Huy hiệu vàng84 Huy hiệu bạc103 Huy hiệu đồng10 gold badges84 silver badges103 bronze badges

3

Bên trong index.js của bạn, bạn có thể gọi chức năng của mình bằng đối tượng

 


    $[ document ].ready[function[] {
       displayy[];
    }];

2.

window.displayy = function[]{ 
    return "hello!" 
}

Và sau đó bạn gọi nó là

 


    $[ document ].ready[function[] {
       displayy[];
    }];

3 hoặc
 


    $[ document ].ready[function[] {
       displayy[];
    }];

4

Một giải pháp tốt hơn là khai báo chức năng của bạn trong phạm vi cao hơn như thế này:

var displayy;

$[ document ].ready[function[] {
      alert['loaded'];
      displayy = function [] {
       alert['executed'];
      } 
 }];

N.B: Sử dụng các biến toàn cầu là xấu nhưng nó sẽ giải quyết vấn đề của bạn. Xin hãy xem ở đây: Tôi đã nghe các biến toàn cầu là xấu, tôi nên sử dụng giải pháp thay thế nào?

Đã trả lời ngày 23 tháng 3 năm 2017 lúc 20:55Mar 23, 2017 at 20:55

0

Xóa tài liệu.

Tôi cũng gặp vấn đề này. Tôi đã có cuộc gọi đến chức năng trong tệp HTML chính của mình bên trong tài liệu. Đã sẵn sàng và tệp .js bên ngoài cũng được gói định nghĩa chức năng được gọi bên trong chức năng tài liệu. Khi tôi xóa trình bao bọc đó trong tệp .js, nó hoạt động tốt. Điều này cho phép các chức năng trong tệp .js bên ngoài trở thành toàn cầu trong phạm vi.

Đã trả lời ngày 11 tháng 5 năm 2020 lúc 18:33May 11, 2020 at 18:33

Gắn các chức năng của bạn vào đối tượng

 


    $[ document ].ready[function[] {
       displayy[];
    }];

2. Một cái gì đó như thế này:

// Set the container!
window.app = {};

// Define the function.
window.app.say_hello = function[name] {
   alert[`Hello ${name}`];
};

// Call the function.
app.say_hello["Iran"];

Tôi đã thử mọi thứ. Chỉ có giải pháp này hoạt động. :]

Đã trả lời ngày 9 tháng 2 năm 2020 lúc 6:20Feb 9, 2020 at 6:20

X 47 48 - IRX 47 48 - IRX 47 48 - IR

1.0721 Huy hiệu vàng10 Huy hiệu bạc26 Huy hiệu đồng1 gold badge10 silver badges26 bronze badges

Bạn xác định chức năng trên DOM đã sẵn sàng, và điều này là vô dụng và sai.

Sử dụng sự kiện sẵn sàng DOM khi bạn gọi chức năng của mình, không phải khi bạn xác định nó:call your function, not when you define it:

Hãy chắc chắn rằng chúng tồn tại trước khi DOM sẵn sàng, sau đó gọi cho họ khi nhận được sự kiện DOM Ready.

So:

  • Định nghĩa chức năng -> Khi bắt đầu [không cần phải bọc vào xử lý sự kiện]
  • Chức năng gọi -> tại DOM đã sẵn sàng

không ngược lại

Đã trả lời ngày 27 tháng 7 lúc 8:51Jul 27 at 8:51

FrancescommfrancommFrancescoMM

2.7391 Huy hiệu vàng16 Huy hiệu bạc26 Huy hiệu đồng1 gold badge16 silver badges26 bronze badges

Tại sao JavaScript nói rằng chức năng của tôi không được xác định?

Bạn đang gọi hàm trước khi được xác định nếu mã gọi hàm JavaScript của bạn trước định nghĩa của hàm trong tài liệu HTML của bạn, bạn sẽ gặp lỗi không được xác định. Điều này rất, rất quan trọng để kiểm tra và loại trừ trước khi bạn tiến hành điều tra các nguyên nhân có thể xảy ra khác. If the code that calls your JavaScript function precedes that function's definition in your HTML document, you will come across the function is not defined error. This is very, very important to check and rule out before you proceed to investigating other probable causes.

Tại sao JavaScript bên ngoài không hoạt động?

Tệp JavaScript bên ngoài không hoạt động của mã Câu trả lời rất có thể, vấn đề là bạn đang đưa tệp JS của mình vào thẻ đầu hoặc ở đâu đó trên nội dung chính của bạn.... Bạn sẽ có thể thêm tệp JS vào thẻ tập lệnh.Trang tải trước sau đó JavaScript.you are including your js file in a head tag or somewhere above your main content. ... You should be able to add the js file in a script tag. The page loads first then JavaScript.

Làm cách nào để viết một hàm trong tệp JavaScript bên ngoài?

Chúng ta có thể đặt thẻ bên trong hoặc thẻ theo nhu cầu.JavaScript bên ngoài: Cách khác là viết mã JavaScript trong một tệp khác có phần mở rộng .js và sau đó liên kết tệp bên trong thẻ HTML mà chúng tôi muốn thêm mã này.write JavaScript code in another file having a . js extension and then link the file inside the or tag of the HTML file in which we want to add this code.

Làm thế nào để bạn sửa chữa chức năng không được xác định?

Để xóa đầu vào văn bản, gán chuỗi Trống thành thuộc tính 'Giá trị' [không phải thuộc tính bên trong].getEuityById ["văn bản"].giá trị = "";Và đừng gọi MyFunction trong tab JS nếu bạn sử dụng đầu vào với "Đặt lại" thuộc tính 'Loại' sẽ làm điều tương tự.assign blank string to 'value' attribute [not innerHTML attribute] document . getElementById["text"]. value = ""; And don't call myfunction in JS tab If you use a then an input with 'type' attribute "reset" will do the same thing.

Bài Viết Liên Quan

Chủ Đề