2012-05-08 36 views
7

Tôi đã thực hiện đoạn mã ngắn này: http://jsfiddle.net/NZnN2/. Tại sao nó không xuất hiện cảnh báo khi tôi nhấp vào nút?Chức năng Javascript không được gọi trong "fiddle"

+1

Như @Rocket chỉ ra, bạn phải thiết lập 'không bọc' thay vì 'onload' trong thanh bên trái . – Imp

+5

Tôi bị mất. Tại sao câu hỏi này lại bị bỏ phiếu quá mạnh? Nó có thể được cải thiện một chút bằng cách giải thích thêm một chút về vấn đề là chính xác, nhưng s/anh ta có một fiddle đó là dễ sử dụng và xem vấn đề ...? – Beska

+5

Không có mã trong câu hỏi, không giải thích về những gì đang xảy ra/không xảy ra, tiêu đề khủng khiếp. – Interrobang

Trả lời

11

Vì mã JavaScript của bạn nằm trong trình xử lý onload, có nghĩa là display_message không phải là toàn cục và do đó không thể truy cập được bằng HTML.

Vì bạn chọn onLoad, JavaScript được tiêm vào trang như thế này:

window.addEvent('load', function() { 
    function display_message(){ 
     alert("woohoo!"); 
    } 
}); 

Như bạn thấy, display_message là chỉ có thể bên trong đó chức năng ẩn danh. Để làm ví dụ hoạt động, hãy thay đổi onLoad thành no wrap (head) hoặc no wrap (body) (ở bên trái của trang).

dụ làm việc: http://jsfiddle.net/NZnN2/8/

+3

Nói cách khác: đó là vấn đề phạm vi –

+2

... và do đó, bạn cần thay đổi menu thả xuống ở bên cạnh. – SLaks

3

thay vì

function display_message() { 
    alert('woohoo!'); 
} 

làm

display_message = function() { 
    alert('woohoo!'); 
} 
+0

trình duyệt nào bạn sử dụng? (trên google chrome, điều này đang hoạt động) – Keil

+0

@ BenniKa: Không thực sự. Nó sẽ làm cho biến toàn cầu, và do đó có thể truy cập đến trình xử lý nội tuyến. –

+0

@BenniKa: Không hoàn toàn. Không có 'var' ở phía trước' display_message = ', nó sẽ biến nó thành biến toàn cục. –

Các vấn đề liên quan