如何将SQL返回的DAYSOLD列传入JavaScript的getElementsByClassName()参数
解决SQL生成的DAYSOLD单元格与JavaScript关联的问题
核心问题是你当前SQL生成的<td>元素没有给DAYSOLD对应的单元格添加DAYSOLD类,导致JavaScript的document.getElementsByClassName('DAYSOLD')找不到目标元素。只需修改SQL中生成DAYSOLD单元格的逻辑,给该<td>添加class属性即可。
修改后的完整代码
(SELECT (SELECT 'Company' AS th, 'Transaction Type' AS th, 'Project Full Name' AS th, 'Prime Contract Number' AS th, 'Status' AS th , 'Days Old' AS th FOR XML RAW('tr'), ELEMENTS, TYPE) AS 'thead', (SELECT [Company] AS td, [Transaction Type] AS td, [ProjectFullName] AS td, [Prime Contract Number] AS td, [Status] AS td, -- 修改这里,给DAYSOLD的td添加class属性 (SELECT [DAYSOLD] AS 'text()', 'DAYSOLD' AS '@class' FOR XML PATH('td'), TYPE) AS td FROM [ProProcessReporting].Engineering.[v_0901-Email-Server-notifications] [esb] WHERE [esb].[Receiver] <> 'Project Manager' AND [esb].[Receiver] <> 'Project Engineer' AND [Status] <> 'Approved' AND [Status] <> 'Rejected' AND [esb].Email = @PAEmails FOR XML RAW('tr'), ELEMENTS, TYPE) AS 'tbody' FOR XML PATH(''), ROOT('table')) + N'</table> <script> // Add a script to dynamically set cell background color based on the value var daysOldCells = document.getElementsByClassName('DAYSOLD'); for (var i = 0; i < daysOldCells.length; i++) { var daysOldValue = parseInt(daysOldCells[i].textContent); // Adjust the condition based on your requirement if (daysOldValue > 2) { daysOldCells[i].classList.add('days-old-highlight'); } } </script>'
关键修改说明
原来的[DAYSOLD] AS td只会生成纯文本内容的<td>标签,现在改用嵌套的FOR XML PATH('td')构造,同时指定'DAYSOLD' AS '@class',这样生成的HTML会是:
<td class="DAYSOLD">具体天数</td>
此时JavaScript就能正确选中这些单元格,执行后续的高亮逻辑。
内容的提问来源于stack exchange,提问作者Wetsi
相关产品推荐
相关产品推荐

