2013-08-29 58 views
12

Tại sao không có hàm javascript nào được viết bên trong document.ready được gọi trực tiếp từ một sự kiện trong jsp?Chức năng Javascript bên trong document.ready

Ví dụ:

$(document).ready(function(){ 
    function abc() 
    { 
      //Some stuff here 
    } 
}); 

Từ một cái gì đó như:

<input id="a" type="button" onclick="abc();"> 
+0

hiển thị đánh dấu của bạn hoặc thực hiện một fiddle –

+5

Bởi vì nó ra khỏi phạm vi. Đính kèm sự kiện _in JavaScript_. – elclanrs

+0

Cách khác, di chuyển khai báo hàm bên ngoài 'document.ready'. Không có lý do gì để đặt nó ở đó. –

Trả lời

20

Bởi vì nó không có sẵn trong phạm vi toàn cầu. Bất kỳ hàm nào được xác định trong hàm nặc danh mà bạn chuyển làm đối số cho $.ready() chỉ có sẵn trong hàm đó.

Để đạt được những gì bạn muốn làm bạn cần một cái gì đó như:

$(document).ready(function(){ 
    function abc() {} 

    $('#a').on('click',abc); 
}); 

Để biết thêm thông tin về phạm vi chức năng thấy this MDN article

+0

Cảm ơn rất nhiều Mchl .. Điều đó làm sáng tỏ sự nghi ngờ của tôi. – SpursP

+0

Làm thế nào chúng ta có thể chuyển tham số đến hàm abc() trong đoạn mã trên? – SpursP

+0

@Pranav: [Làm thế nào tôi có thể chuyển đối số cho trình xử lý sự kiện trong jQuery?] (Http://stackoverflow.com/q/979337/218196) –