2017-09-12 10 views
6
element.onkeypress = function(e) { 
        if(e.keyCode) { 
         element.keyCode = e.keyCode; 
        } else { 
         element.keyCode = e.charCode; 
        } 
       }; 

Cũng trong kịch bản java, cũng cóTham số để sử dụng cho sự kiện là gì? làm sao tôi biết?

<input onChange="a(event)"/> 
<script> 
function a(event) { 
    alert(event.target.value); 
} 
</script> 

là Như một nhận tham số, làm thế nào để tôi biết nếu tôi phải đặt sự kiện cho tham số thay vì e? Ví dụ thứ hai sẽ không hoạt động nếu đó là tham số là bất cứ điều gì khác hơn là sự kiện không phải là cả hai javascript?

+1

Là người chỉ tinker với JavaScript không thường xuyên, tôi tiếp tục gặp sự cố này. Tôi nhìn nó lên, lần sau tôi không thể nhớ được. Gotta fav câu hỏi này để tôi có thể trở lại với nó trong thời gian tới nó sẽ xảy ra ... – domsson

+0

Tên tham số là không thích hợp. –

Trả lời

0

function(e) là một hàm bình thường với thông số. Tham số có thể có bất kỳ tên nào bạn muốn.

Bên trong onkeypress, trình duyệt cung cấp sự kiện có thông số đặc biệt luôn được đặt tên event. Nếu bạn chuyển nó đến hàm của riêng bạn, hàm đó có thể sử dụng bất kỳ tên tham số nào mà nó muốn, như mọi khi.

0

Khi thiết lập cuộc gọi lại sự kiện bằng các tiêu chuẩn hiện đại, máy khách sẽ tự động chuyển tham chiếu tới đối tượng sự kiện vào từng chức năng gọi lại sự kiện. Nó sẽ luôn là đối số đầu tiên.

Bạn không cần phải làm gì để thực hiện điều đó. Tất cả những gì bạn cần làm là nắm bắt tham chiếu và bạn có thể làm điều đó với bất kỳ đối số được đặt tên nào bạn thích. Vì bạn là người nhận đối số, tên bạn chọn không phải khớp với bất kỳ thứ gì. Bạn có thể gọi nó là bất cứ điều gì (đó là một định danh hợp lệ).

Bây giờ, ví dụ của bạn chỉ hoạt động bởi vì trong phạm vi toàn cầu của một trang web đối tượng window cho thấy một đối tượng duy nhất event và đó là những gì a(event) đang truy cập .:

<input onChange="a(event)"/> 
<script> 
    function a(event) { 
    alert(event.target.value); 
    } 
</script> 

Nhưng, đây không phải là hiện đại cách mà các sự kiện sẽ được thiết lập. Thuộc tính sự kiện HTML nội dòng (onclick, onchange, v.v.) không được sử dụng (here's why).

Cách tiếp cận hiện đại như sau và lưu ý rằng việc đăng ký chức năng gọi lại sự kiện (a) không biểu thị bất kỳ điều gì về sự kiện, nhưng chức năng thực tế có thể nhận thông tin cần thiết chỉ bằng cách mong đợi đối số.

document.querySelector("input").addEventListener("change", a); 
 
function a(anyNameIsGoodHere) { 
 
    alert(anyNameIsGoodHere.target.value); 
 
}
<div>Type anything into the text field and then hit TAB</div> 
 
<input>

+0

hi, tôi đang sử dụng góc 2.0, làm thế nào để tôi biết loại sự kiện nào là bản sao của addeventlistener? ssorry, tôi không có nhiều khái niệm về tất cả những điều này, giống như cách chúng được sử dụng cùng nhau ... làm thế nào javascript có thể vào mô-đun góc 2.0? – newB

+0

'.addEventListener()' không phải là một sự kiện. Đây là phương pháp chuẩn API DOM để đăng ký các chức năng xử lý sự kiện. Bạn có thể sử dụng nó để đăng ký bất kỳ sự kiện nào. Trong ví dụ trên, tôi đang sử dụng nó để đăng ký một hàm gọi là 'a' để kích hoạt khi sự kiện' change' của phần tử 'input' xuất hiện. –

3

Khi bạn liên kết một event handler sử dụng một tài sản hoặc on*addEventListener, đối tượng Sự kiện này sẽ được thông qua như là số đầu tiên. Bạn tự đặt tên cho nó như bình thường khi viết một biểu thức hàm hoặc khai báo hàm. Các hạn chế bình thường đối với những gì bạn có thể đặt tên đối số áp dụng (nghĩa là chúng phải là tên định danh hợp lệ). event, eevt là các tên phổ biến cho biến đó.

Khi bạn liên kết một event handler sử dụng một on*thuộc tính, bạn đang viết chỉ có cơ quan chức năng (ví dụ function (event) {} được ngụ ý. Các đối tượng sự kiện sẽ có mặt trong biến event.

-1

Khi bạn xác định một chức năng bạn có thể gọi tham số bất cứ điều gì bạn muốn (sự kiện, e, foo, vv ...) và khi bạn gọi hàm, bạn phải sử dụng tên thích hợp của bất cứ điều gì bạn đang truyền cho hàm.

0

bạn có thể tìm thông số nào được kích hoạt trên sự kiện cụ thể bằng cách thêm console.log ("some text here") sau mỗi sự kiện.

Bạn có thể xem nhật ký của mình trong bảng điều khiển

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