首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JavaScript 表格行內按鈕取得同行隱藏 input 值:原生 DOM 與 jQuery 兩種實現

     編輯:程式設計綜合問答

在動態生成的 HTML 表格中,每行包含一個「確定」按鈕與一個 type="hidden" 的 input[name="cn"],需點擊按鈕時取得**該行**對應的隱藏值。核心技巧:**從事件目標 (this/event.target) 向上尋找共同祖先 tr 或 td,再向下查找目標 input**。

原生 JavaScript 實現 (零依賴、效能最佳)


function getInputValue(btn) {
    // 1. 從按鈕向上找最近的 td (或 tr)
    const cell = btn.closest('td'); // 支援 IE15+ / Edge / 現代瀏覽器
    // 兼容舊瀏覽器: let cell = btn.parentElement; while (cell && cell.tagName !== 'TD') cell = cell.parentElement;

    // 2. 在該 td 內查找 name="cn" 的 input
    const input = cell.querySelector('input[name="cn"]');
    if (input) {
        alert('當前行隱藏值: ' + input.value);
        // 實際業務邏輯...
    }
}

HTML 結構範例:


jQuery 實現 (簡潔、舊專案常用)


// 事件委派:針對動態新增的行也有效
$('#dataTable').on('click', 'button', function() {
    const value = $(this).closest('td').find('input[name="cn"]').val();
    alert('當前行隱藏值: ' + value);
});

// 或綁定在 tr 上 (若按鈕在 td 之外)
$('#dataTable').on('click', 'button', function() {
    const value = $(this).closest('tr').find('input[name="cn"]').val();
    alert(value);
});

關鍵 API 對照表

需求原生 DOMjQuery
向上找最近的祖先元素element.closest('selector')$(element).closest('selector')
向下查找後代元素element.querySelector('selector')$(element).find('selector')
取得 input 值input.valueinput.val()
動態新增元素事件綁定parent.addEventListener('click', e => { if(e.target.matches('button')) ... })$(parent).on('click', 'button', handler)

常見錯誤避坑

  • ❌ document.getElementsByName('cn')[0] → 只取全頁第一個,非當前行。
  • ❌ btn.parentNode.getElementsByTagName('input')[0] → 若按鈕被 span 包裹,層級錯誤。**請用 closest() 找穩定祖先 (td/tr)**。
  • ❌ 重複 id="cn" → ID 必須唯一,**請用 name 或 data-* 屬性**。

進階:取得整行所有欄位資料


function getRowData(btn) {
    const row = btn.closest('tr');
    const cells = row.querySelectorAll('td');
    const data = {};
    cells.forEach((cell, idx) => {
        const input = cell.querySelector('input');
        if (input) data['col' + idx] = input.value;
        // 或取顯示文字: cell.textContent.trim()
    });
    return data;
}

總結

表格行內按鈕取值核心模式:**btn.closest('tr/td').querySelector('target')**。原生 closest() + querySelector() 現代瀏覽器全支援,無需引入 jQuery,體積更小、效能更高。動態表格請採用事件委派 (table.on('click', 'button', ...)) 避免重複綁定。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved