gpt4 book ai didi

Javascript:更改表格行 HTML

转载 作者:行者123 更新时间:2023-12-03 01:11:57 25 4
gpt4 key购买 nike

我正在为我们公司的报价软件创建一个模板,该模板会生成一个 HTML 页面并动态填充表格,每个报价项目都是一个新行。

我需要检查报价中的特定零件号,如果存在,我需要更改该行的 HTML。

这是 HTML 片段

    <div id="line-items-section" class="section">
<table id="line-item-detail-table" class="table-001">
<tr>
<!-- <th>
</th> -->
<th>
QTY
</th>
<th width="70%">
Item
</th>
<th>
Unit Price
</th>
<th>
Ext Price
</th>
</tr>
[Begin_LineItem] [Begin_LineTypeProduct]
<tr id="canChange" class="row-product">
<!-- <td class="col-option-box">
[QV_OptionBox]
</td> -->
<td class="col-qty">
[DI_QtyBase]
</td>
<td class="col-partnumber">
[DI_ManufacturerPartNumber]
</td>
<td class="col-unit-price">
[DI_UnitPrice:f=1]
</td>
<td class="col-extended-price">
[DI_ExtendedPrice:f=1]
</td>
</tr>

<tr class="row-product-description">
<!-- <td class="col-option-box">
[QV_OptionBox]
</td> -->
<td class="col-qty">
</td>
<td colspan="3" class="col-description">
[DI_Description]
</td>
</tr>
[End_LineTypeProduct]

然后我就有了这个 Javascript 文件:

var matches = document.querySelectorAll("td.col-partnumber");
for(var value of matches.values()) {
//console.log(value.innerText);
if (value.innerText == "SLAB KIT FORM") {
var str = '<tr class="row-comment"><td class="col-qty"></td><td colspan="4" class="col-description">[DI_Description]</td></tr>';
var Obj = document.getElementById('canChange');
Obj.outerHTML = str;
}
}

我正在使用 querySelectorAll 和 For 循环来查找我想要的零件号(我正在寻找“SLAB KIT FORM”)。然后使用outerHTML更改HTML。

这部分有效。

结果是,找到了零件编号,但代码仅更改了表中的第一行...我正在查找的表行可能出现在表中的任何位置(甚至在同一个表中多次出现) )。

本质上,我需要让此代码仅针对包含具有 SLAB KIT FORM 的单元格的表格行

最佳答案

您不应向每一行添加相同的 ID。通过 JavaScript 找到正确的表格单元格后,您可以通过 parentNode 属性找到适当的行。

例如这样:

window.addEventListener('load', function() {
const button = document.querySelector('.run-script')
button.addEventListener('click', function() {
var matches = document.querySelectorAll("td.col-partnumber");
for (var value of matches.values()) {
// console.info(value);
if (value.innerText == "SLAB KIT FORM") {
var str = '<tr class="row-comment"><td class="col-qty"></td><td colspan="4" class="col-description">[DI_Description]</td></tr>';
var Obj = value.parentNode;
Obj.outerHTML = str;
}
}
})
})
button {
padding: 1rem;
background-color: darkred;
color: white;
margin-bottom: 1rem;
width: 25%;
min-width: 200px;
font-size: 1.2rem;
text-transform: uppercase;
cursor: pointer;
}

table {
font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
border-collapse: collapse;
width: 100%;
}

table td, #customers th {
border: 1px solid #ddd;
padding: 8px;
}

table tr:nth-child(even){background-color: #f2f2f2;}

table tr:hover {background-color: #ddd;}

table th {
padding-top: 12px;
padding-bottom: 12px;
text-align: left;
background-color: #4CAF50;
color: white;
}
<button class="run-script" type="button">Run Script</button>

<div id="line-items-section" class="section">
<table id="line-item-detail-table" class="table-001">
<tr>
<!-- <th>
</th> -->
<th>
QTY
</th>
<th width="70%">
Item
</th>
<th>
Unit Price
</th>
<th>
Ext Price
</th>
</tr>
<tr class="row-product">
<td class="col-qty">
5
</td>
<td class="col-partnumber">
NOT THE PARTNUMBER YOU'RE LOOKING FOR
</td>
<td class="col-unit-price">
40
</td>
<td class="col-extended-price">
forty
</td>
</tr>

<tr class="row-product-description">
<td class="col-qty">
</td>
<td colspan="3" class="col-description">
some description
</td>
</tr>
<tr class="row-product">
<td class="col-qty">
8
</td>
<td class="col-partnumber">
SLAB KIT FORM
</td>
<td class="col-unit-price">
20
</td>
<td class="col-extended-price">
twenty
</td>
</tr>

<tr class="row-product-description">
<td class="col-qty">
</td>
<td colspan="3" class="col-description">
other description
</td>
</tr>
</table>
</div>

关于Javascript:更改表格行 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52181222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com