Câu hỏi Làm thế nào để chuyển một tham số đến một hàm Javascript được thiết lập động?


Ok, tôi có một Javascript tạo các hàng trong bảng như sau:

  function AddRow(text,rowID) 
  {
    var tbl = document.getElementById('tblNotePanel');
    var row = tbl.insertRow(tbl.rows.length);

    var cell = row.insertCell();
    var textNode = document.createTextNode(text);
    cell.id = rowID;
    cell.style.backgroundColor = "gold";

    cell.onclick = clickTest;

    cell.appendChild(textNode);
  }

Trong hàm trên, tôi đặt hàm "onclick" của ô để gọi một hàm Javascript khác gọi là "clickTest". Câu hỏi của tôi là, khi tôi gán sự kiện "onclick" để gọi "clickTest", làm cách nào để đặt thông tin tham số được gửi khi phương thức "clickTest" được gọi trên sự kiện "onclick" của ô? Hoặc, làm cách nào để truy cập ID của ô trong hàm "clickTest"?

Cảm ơn, Jeff


12
2017-11-20 03:46


gốc




Các câu trả lời:


Thử cái này:

cell.onclick = function() { clickTest(rowID); };

Ý tưởng là bạn đang ràng buộc trình xử lý onclick với hàm ẩn danh. Hàm ẩn danh gọi clickTest với rowID làm tham số.


22
2017-11-20 03:52





Trong hàm clickTest, bạn sẽ có quyền truy cập vào this biến. Hãy thử điều này bên trong clickTest chức năng:

alert(this.id);

Điều này sẽ đề cập đến phần tử DOM đã kích hoạt sự kiện.

Về cơ bản, không có cách nào để truyền các tham số cho một hàm xử lý sự kiện. Lý do cho điều đó là trình duyệt đang thực hiện chức năng dựa trên một sự kiện và bạn không thực sự gọi hàm này.

Bạn có thể sử dụng các bao đóng cho phép bạn truy cập các biến cục bộ (để đóng) khi bạn gán hàm xử lý sự kiện. Điều đó sẽ trông như thế này:

cell.onclick = function() { alert(this.id); alert(cell.id); };

cell.id là biến phạm vi cục bộ vẫn được xem xét trong phạm vi khi trình xử lý sự kiện được thực hiện.


4
2017-11-20 03:52