2009-06-03 29 views
17
<script> 
function Hello(){ 
    var caller = arguments.callee.caller; 
    alert(caller); 
} 
</script> 

<input type="button" id="btnHello" value="Hello" onclick="Hello()" /> 

Làm thế nào để có được những nút id từ chức năng Xin chào trên với ra đi qua các bất kỳ đối số trong hàm Xin chàoLàm thế nào để có được những sự kiện gọi và yếu tố id dom

+2

Nhân tiện, arguments.callee.caller là một tham chiếu đến hàm, nếu có, gọi là hàm hiện tại. Nó không được thực hiện trong tất cả các trình duyệt, và đã không được chấp nhận bởi các chàng trai kịch bản ecma trong nhiều năm. – kennebec

Trả lời

26

Một đối tượng Sự kiện này được thông qua với Hello chức năng tự động. Bạn cần nhận nó như một đối số và sau đó thực hiện một số công việc đa nền tảng để lấy phần tử. Một khung công tác JS sẽ giúp bạn ở đây.

function Hello(e){ 
    var caller = e.target || e.srcElement; 
    console.log(caller); 
} 

EDIT
1 Andrew bình luận dưới đây. Sử dụng addEventListener và attachEvent để thực hành tốt nhất.

+2

đối tượng sự kiện chỉ được truyền nếu nó được sử dụng như btnid.onclick = function (e) {alert (e.target)}; Nhưng làm thế nào để có được đối tượng sự kiện khi chúng ta áp dụng sự kiện là inline. – Jineesh

+4

IIRC, bạn có thể lấy nó bằng cách đặt thuộc tính 'onlick' thành" Hello (event) ". –

+2

Đính kèm sự kiện với JavaScript không phô trương thay vì sử dụng trình xử lý sự kiện nội tuyến, sau đó bạn có thể sử dụng đối tượng sự kiện được chuyển đến cuộc gọi lại sự kiện. –

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