You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HTML输出表格无水平边框及日期字段换行问题技术咨询

问题排查&解决方法

1. 表格水平边框不生效的原因

  • 表格标签语法错误:你写的<table width="400px" align="center" colspan="40" table border="5">存在两处错误,一是多了冗余的table关键字,二是colspan是单元格(td/th)专属属性,放在table标签上完全无效,会导致边框属性解析异常。
  • 边框模式默认分离:浏览器默认表格边框为分离模式,就算border属性生效,内部行之间的边框也不会连续显示,需要手动设置边框合并。
  • 动态渲染逻辑错误:你当前是把所有提交的记录都塞到固定的2行表格的第二行单元格里,仅用<br>做换行,没有生成新的表格行,多条数据之间自然不会出现水平分割边框。
  • 额外语法错误:提交按钮的代码<input type="button" ...></button>标签不匹配,input是单标签,不需要后面的</button>闭合。

2. 具体修改方案

(1)HTML部分修改

修正表格标签、移除冗余的单元格div、添加边框合并和禁止换行的样式,参考代码:

<td align="center"><input type="button" value="Submit" name="submit" id="submit" onClick="display()" /></td>
</tr>
</table>
<!-- 调整表格宽度避免内容挤压,添加边框合并样式 -->
<table width="700px" align="center" border="1" style="border-collapse: collapse;">
    <tr style="background-color:#8FBC8F;">
        <td align="center" width="150px"><b>Name</b></td>
        <td align="center" width="150px"><b>Company</b></td>
        <!-- 时间列添加white-space: nowrap禁止换行,固定宽度 -->
        <td align="center" width="120px" style="white-space: nowrap;"><b>Time In</b></td>
        <td align="center" width="120px" style="white-space: nowrap;"><b>Time Out</b></td>
        <td align="center" width="160px"><b>Description of Work</b></td>
    </tr>
    <!-- 移除原来的第二行和内部的div,后续通过JS动态插入行 -->
</table>
(2)JS部分修改

调整display函数逻辑,每次提交直接生成新的表格行插入,不需要再拆分innerHTML处理:

function display() {
    // 获取输入值
    const fname = document.getElementById("fname").value.trim();
    const lname = document.getElementById("lname").value.trim();
    const sname = document.getElementById("sname").value.trim();
    const pname = document.getElementById("pname").value.trim();
    const jname = document.getElementById("jname").value.trim();
    if(!fname) return; // 空值不提交
    
    // 获取表格,插入新行
    const table = document.querySelector('table[border]');
    const newRow = table.insertRow(-1);
    
    // 插入5个单元格
    const cell1 = newRow.insertCell(0);
    cell1.align = 'center';
    cell1.textContent = fname;
    
    const cell2 = newRow.insertCell(1);
    cell2.align = 'center';
    cell2.textContent = lname;
    
    const cell3 = newRow.insertCell(2);
    cell3.align = 'center';
    cell3.textContent = sname;
    
    const cell4 = newRow.insertCell(3);
    cell4.align = 'center';
    cell4.textContent = pname;
    
    const cell5 = newRow.insertCell(4);
    cell5.align = 'center';
    cell5.textContent = jname;
    
    // 清空输入框
    document.getElementById("fname").value = "";
    document.getElementById("lname").value = "";
    document.getElementById("sname").value = "";
    document.getElementById("pname").value = "";
    document.getElementById("jname").value = "";
}

// 对应的getValue函数也可以简化,直接遍历表格行获取数据
function getValue() {
    let Items = "";
    const table = document.querySelector('table[border]');
    // 从第二行开始遍历(跳过表头)
    for(let i=1; i<table.rows.length; i++) {
        const row = table.rows[i];
        const rowData = [];
        for(let j=0; j<row.cells.length; j++) {
            rowData.push(row.cells[j].textContent);
        }
        Items += rowData.join(' ,') + '\n';
    }
    console.log(Items);
    return Items;
}

3. 日期不换行补充说明

时间列已经通过white-space: nowrap强制不换行,同时固定了列宽,只要表格总宽度足够,就不会出现折行问题,如果日期格式特别长,可以再适当调大时间列的width值即可。


内容的提问来源于stack exchange,提问作者SMARZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 21:12:02