亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

向以行和列為參數的表單元格添加箭頭函數

向以行和列為參數的表單元格添加箭頭函數

繁花不似錦 2022-09-16 21:49:53
我想通過javascript中的箭頭函數為表中的所有單元格調用一個函數,并將單元格的行和列添加為參數。但是我的解決方案不起作用:setTableListener() {    var table = document.getElementById("tableName"), row, column;    for (var i = 0; i < table.rows.length; i++) {        for (var j = 0; j < table.rows[i].cells.length; j++) {            var cell = table.rows[i].cells[j];            row = cell.parentElement.rowIndex;            column = cell.cellIndex;            cell.onclick = () => this.turn(row, column);        }    }}turn(row, column) {    console.log(row + " " + column)}輸出是 talbe 大小為 3x3 的阿爾斯韋。2 2
查看完整描述

2 回答

?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

I?t?'?s? ?b?e?c?a?u?s?e? ?c?o?u?n?t?i?n?g? ?f?o?r? ?p?r?o?p?e?r?t?i?e?s? ? ?a?n?d? ? ?b?e?g?i?n?s? ?f?r?o?m? ?0?..? ?A?c?c?o?r?d?i?n?g?l?y? ?f?o?r? ?t?h?i?r?d? ?r?o?w? ?a?n?d? ?c?o?l?u?m?n? ?r?e?s?u?l?t? ?w?i?l?l? ?b?e? ?2?.?r?o?w?I?n?d?e?x?c?e?l?l?I?n?d?e?x?


更新。


請原諒我的疏忽。調用函數時,方法引用 和 變量,該變量被最后一個循環的迭代覆蓋。onclickturnrowcell


如何解決?您需要將變量的初始化和函數設置置于閉包中。rowcellonclick


例如:


cell.onclick = (() => {

    // Closure starts here. Now, method turn will be called with variables which was defined down here.

    var row = cell.parentElement.rowIndex;

    var column = cell.cellIndex;

    return () => this.turn(row, column);

})();

在這里,我們創建了自動執行的匿名函數,其中包含和變量的初始化,其中包含所需的值。另外,在這里我們返回了將設置為 onclick 處理程序的函數,并且我們的處理程序包含對已傳輸變量和 的 turn 調用。rowcellmethodrowcell


因此,每個 onclick 處理程序內部方法調用都傳遞了在閉包中初始化的 own 和 變量。turnrowcell


查看完整回答
反對 回復 2022-09-16
?
慕的地8271018

TA貢獻1796條經驗 獲得超4個贊

這里需要的是將“唯一”事件偵聽器附加到每個單元格。所以,試試這個onclick

cell.addEventListener('click', this.turn.bind(this, row, column))

cell.onclick = this.turn.bind(this, row, column);


查看完整回答
反對 回復 2022-09-16
  • 2 回答
  • 0 關注
  • 100 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號