JavaScript escape() 函数

本文介绍了JavaScript中的escape()函数,该函数用于对字符串进行编码,使其能在所有计算机上正确读取。文章详细解释了其语法、参数及返回值,并说明了哪些ASCII字符会被保留,哪些会被转义。

定义和用法

escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。

语法

escape(string)
参数 描述
string 必需。要被转义或编码的字符串。

返回值

已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列。

说明

该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。

const unsigned char systemsettingpage[] = { "<html>\r\n" "<head>\r\n" "<meta charset=\"gb2312\">\r\n" // 20210421LWD "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=EmulateIE7\" />\r\n" // 20210421LWD "<title>智能蓄电池监控系统</title>" //"<Meat http-equiv=Content-Type content=text/html charset=gb2312>"//2021-03-19 "<script type=\"text/javascript\"> \r\n" "function validate()\r\n" "{\r\n" "var CT=document.getElementById(\"CT\").value\r\n" "var MT=document.getElementById(\"MT\").value\r\n" "var RT=document.getElementById(\"RT\").value\r\n" "var AD=document.getElementById(\"AD\").value\r\n" "var DA=document.getElementById(\"DA\").value\r\n" "var TM=document.getElementById(\"TM\").value\r\n" "var ED=document.getElementById(\"ED\").value\r\n" "var testtm=\"(([0-1][0-9])|(2[0-3])):[0-5][0-9]:[0-5][0-9]\"\r\n" "var testda=\"[2][0][0-9][0-9]-(([0][0-9])|([1][0-2]))-(([0-2][0-9])|([3][0-1]))\"\r\n" "submitOK=\"true\"\r\n" "if (isNaN(ED) || ED<0.0 || ED>0.2)\r\n" "{\r\n" "alert(\"均衡差异输入错误!\")\r\n" "submitOK=\"false\"\r\n" "}\r\n" "if (isNaN(CT) || CT<1 || CT>65535)\r\n" "{\r\n" "alert(\"充电记录周期输入错误!\")\r\n" "submitOK=\"false\"\r\n" "}\r\n" "if (isNaN(MT) || MT<29 || MT>65535)\r\n" "{\r\n" "alert(\"模块关机时间输入错误!\")\r\n" "submitOK=\"false\"\r\n" "}\r\n" "if (isNaN(AD) || AD<0 || AD>255)\r\n" "{\r\n" "alert(\"RS485地址超出范围!\")\r\n" "submitOK=\"false\"\r\n" "}\r\n" "if (isNaN(RT) || RT<0.1 || RT>65535.0)\r\n" "{\r\n" "alert(\"内阻测试周期输入错误!\")\r\n" "submitOK=\"false\"\r\n" "}\r\n" "if (DA.match(testda)==null)\r\n" "{\r\n" "alert(\"日期输入错误!\")\r\n" "submitOK=\"false\"\r\n" "}\r\n" "if (TM.match(testtm)==null)\r\n" "{\r\n" "alert(\"时间输入错误!\")\r\n" "submitOK=\"false\"\r\n" "}\r\n" "if(submitOK==\"false\")\r\n" "{\r\n" "return false\r\n" "}\r\n" "document.getElementById(\"RT\").value *=10\r\n" "document.getElementById(\"ED\").value *=100\r\n" "}\r\n" "function validate1()\r\n" "{\r\n" "var MA=document.getElementById(\"MA\").value\r\n" "var IP=document.getElementById(\"IP\").value\r\n" "var NG=document.getElementById(\"NG\").value\r\n" "var SM=document.getElementById(\"SM\").value\r\n" "var PN=document.getElementById(\"PN\").value\r\n" "var PR=document.getElementById(\"PR\").value\r\n" "var testma=\"[F][4].[0][E].[1][1].([0-9]|[A-F])([0-9]|[A-F]).([0-9]|[A-F])([0-9]|[A-F]).([0-9]|[A-F])([0-9]|[A-F])\"\r\n" "var testip=\"(([0-1][0-9][0-9])|([0-2][0-5][0-5])).(([0-1][0-9][0-9])|([0-2][0-5][0-5])).(([0-1][0-9][0-9])|([0-2][0-5][0-5])).(([0-1][0-9][0-9])|([0-2][0-5][0-5]))\"\r\n" "submitOK=\"true\"\r\n" "if (MA.match(testma)==null)\r\n" "{\r\n" "alert(\"MAC地址输入错误!\")\r\n" "submitOK=\"false\"\r\n" "}\r\n" "if (IP.match(testip)==null)\r\n" "{\r\n" "alert(\"IP地址输入错误!\")\r\n" "submitOK=\"false\"\r\n" "}\r\n" "if (NG.match(testip)==null)\r\n" "{\r\n" "alert(\"网关地址输入错误!\")\r\n" "submitOK=\"false\"\r\n" "}\r\n" "if (SM.match(testip)==null)\r\n" "{\r\n" "alert(\"子网掩码输入错误!\")\r\n" "submitOK=\"false\"\r\n" "}\r\n" "if (isNaN(PN) || PN<0 || PN>65535)\r\n" "{\r\n" "alert(\"SOCKET1端口输入错误!\")\r\n" "submitOK=\"false\"\r\n" "}\r\n" "if (isNaN(PR) || PR<0 || PR>65535)\r\n" "{\r\n" "alert(\"SOCKET2端口输入错误!\")\r\n" "submitOK=\"false\"\r\n" "}\r\n" "if(submitOK==\"false\")\r\n" "{\r\n" "return false\r\n" "}\r\n" "}\r\n" "</script>\r\n" "</head>\r\n" "<body style=\"background-color:#f4f4f4\">\r\n" // "<h1>\r\n" // "<span style=\"color:#FFFFFF;background-color:#E53333;\"><strong><span style=\"font-size:34px;line-height:1;\">深圳市海德森科技股份有限公司</span></strong></span><br />\r\n" // "</h1>\r\n" "<span style=\"color:#000FFF;font-size:24px\">智能蓄电池监控系统</span>\r\n" "<p align=\"center\">\r\n" "<b>[&nbsp</b>" "<a href=\"/9.html\">主页</a>" "<b>&nbsp|&nbsp</b>" "<a href=\"/4.html\">实时数据</a>" //---------------------------------------------------20210421LWD "<b>&nbsp|&nbsp</b>" "<a href=\"/C.html\">初始内阻</a>" "<b>&nbsp|&nbsp</b>" "<a href=\"/7.html\">报警记录</a>" "<b>&nbsp|&nbsp</b>" "<a href=\"/1.html\">电池设置</a>" "<b>&nbsp|&nbsp</b>" "<a href=\"/2.html\" style=\"color:#ff0000\">系统设置</a>" "<b>&nbsp|&nbsp</b>" "<a href=\"/3.html\">报警设置</a>" "<b>&nbsp|&nbsp</b>" "<a href=\"/G.html\">安装调试</a>" "<b>&nbsp]</b>\r\n" "</p>\r\n" "<hr size=\"1\">\r\n" "<br />" "<form action=\"/2.html\" name=\"fm\" onsubmit=\"return validate()\">" "<p align=\"center\" style=\"color:#000FFF\">系统参数设置</p>" "<p align=\"center\">" "<table width=\"800\" bgcolor=\"#f0ffff\" border=\"0\" cellpadding=\"10\" cellspacing=\"10\">" "<tr>" "<hr size=\"1\" width=\"800\">" "<hr size=\"1\" width=\"800\">" "<td>" "<br />" "RS485设备地址:&nbsp&nbsp&nbsp&nbsp<input type=\"text\" value=%Number name=\"AD\" id=\"AD\" size=\"10\">" "</td>" "<td>" "<br />" "RS485设备速率:&nbsp&nbsp&nbsp&nbsp<select name=\"BD\">" "<option value=\"0\" %Number__>&nbsp&nbsp4800&nbsp&nbsp</option>" "<option value=\"1\" %Number__>&nbsp&nbsp9600</option>" "<option value=\"2\" %Number__>&nbsp&nbsp19200</option>" "</select>" "</td>" "</tr>" "<tr>" "<td>" "充电记录间隔(Min):<input type=\"text\" value=%Number name=\"CT\" id=\"CT\" size=\"10\">" "</td>" "<td>" "内阻测试周期(H):&nbsp&nbsp<input type=\"text\" value=%Number name=\"RT\" id=\"RT\" size=\"10\">" "</td>" "</tr>" "<tr>" "<td>" "FLASH数据清空:&nbsp&nbsp&nbsp&nbsp<select name=\"FR\">" "<option value=\"0\">&nbsp&nbsp禁止&nbsp&nbsp</option>" "<option value=\"1\">&nbsp&nbsp使能</option>" "</select>" "</td>" "<td>" "恢复出厂设置:&nbsp&nbsp&nbsp&nbsp&nbsp<select name=\"RS\">" "<option value=\"0\">&nbsp&nbsp禁止&nbsp&nbsp</option>" "<option value=\"1\">&nbsp&nbsp使能</option>" "</select>" "</td>" "</tr>" "<tr>" "<td>" "主机日期设置:&nbsp&nbsp&nbsp&nbsp&nbsp<input type=\"text\" value=%Number____ name=\"DA\" id=\"DA\" size=\"10\">" "</td>" "<td>" "主机时间设置:&nbsp&nbsp&nbsp&nbsp&nbsp<input type=\"text\" value=%Number__ name=\"TM\" id=\"TM\" size=\"10\">" "</td>" "</tr>" "<tr>" "<td >" "电池均衡:&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<select name=\"EQ\">" "<option value=\"0\"%Number__>&nbsp&nbsp禁止&nbsp&nbsp</option>" "<option value=\"1\"%Number__>&nbsp&nbsp开启</option" "</select>" "</td>" "<td>" "均衡差异(V):&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<input type=\"text\"value=%Number name=\"ED\" id=\"ED\" size=\"10\">" "</td>" "</tr>" "<tr>" "<td >" "模块通信速率:&nbsp&nbsp&nbsp&nbsp&nbsp<select name=\"MB\">" //--------------------------------------------------------20210421LWD "<option value=\"0\"%Number__>&nbsp&nbsp4800&nbsp&nbsp</option>" "<option value=\"1\"%Number__>&nbsp&nbsp9600&nbsp&nbsp</option>" "<option value=\"2\"%Number__>&nbsp&nbsp19200&nbsp&nbsp</option>" "<option value=\"3\"%Number__>&nbsp&nbsp38400</option" "</select>" "</td>" "<td>" "模块关机时间(Min):<input type=\"text\" value=%Number name=\"MT\" id=\"MT\" size=\"10\">" "</td>" "</tr>" "<tr>" "<td >" "内阻测试模式:&nbsp&nbsp&nbsp&nbsp&nbsp<select name=\"RM\">" //--------------------------------------------------------20210421LWD "<option value=\"0\"%Number__>&nbsp&nbsp自动快测&nbsp&nbsp</option>" "<option value=\"1\"%Number__>&nbsp&nbsp手动快测&nbsp&nbsp</option>" "<option value=\"2\"%Number__>&nbsp&nbsp自动慢测&nbsp&nbsp</option>" "<option value=\"3\"%Number__>&nbsp&nbsp手动慢测</option" "</select>" "</td>" "<td>" "组压模块:&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<select name=\"GV\">" "<option value=\"0\"%Number__>&nbsp&nbsp禁止&nbsp&nbsp</option>" "<option value=\"1\"%Number__>&nbsp&nbsp开启</option" "</select>" "</td>" "</tr>" "<tr>" "<td>" "</td>" "<td align=\"right\">" "<input type=\"submit\" value=\"保存\">&nbsp" "<input type=\"reset\" value=\"取消\">" "<br />" "</td>" "</tr>" "</table>" "<hr size=\"1\" width=\"800\">" "<hr size=\"1\" width=\"800\">" "</p>" "</form>" "<form action=\"/2.html\" name=\"fm1\" onsubmit=\"return validate1()\">" "<p align=\"center\" style=\"color:#000FFF\">TCP/IP网络参数设置</p>" "</tr>" "<tr>" "<p align=\"center\">" "<table width=\"800\" bgcolor=\"#f0ffff\" border=\"0\" cellpadding=\"10\" cellspacing=\"10\">" "<tr>" "<hr size=\"1\" width=\"800\">" "<hr size=\"1\" width=\"800\">" "<td>" "<br />" "本机MAC地址:&nbsp<input type=\"text\" value=%Number___________ name=\"MA\" id=\"MA\" size=\"20\">" //----------------------------------20210421LWD "</td>" "<td>" "<br />" "本机IP地址:<input type=\"text\" value=%Number_________ name=\"IP\" id=\"IP\" size=\"18\">" "</td>" "</tr>" "<tr>" "</tr>" "<tr>" "<td>" "本地网关:&nbsp&nbsp&nbsp&nbsp<input type=\"text\" value=%Number_________ name=\"NG\" id=\"NG\" size=\"18\">" "</td>" "<td>" "子网掩码:&nbsp&nbsp<input type=\"text\" value=%Number_________ name=\"SM\" id=\"SM\" size=\"18\">" "</td>" "</tr>" "<tr>" "<td>" "Socket1端口号:<input type=\"text\" value=%Number name=\"PN\" id=\"PN\" size=\"10\">" "</td>" "<td>" "Socket2端口号:<input type=\"text\" value=%Number name=\"PR\" id=\"PR\" size=\"10\">" "</td>" "</tr>" "<tr>" "<td align=\"right\">" "<input type=\"submit\" value=\"保存\">&nbsp" "<input type=\"reset\" value=\"取消\">" "<br />" "</td>" "</tr>" "</table>" "<hr size=\"1\" width=\"800\">" "<hr size=\"1\" width=\"800\">" "</p>" "</form>" // "<script language=\"JavaScript\">\r\n" // "function reloadpg()\r\n" // "{\r\n" "<td align=\"right\">" "<input type=\"submit\" value=\"保存\">&nbsp" "<input type=\"reset\" value=\"取消\">" "<br />" "</td>" // // "setTimeout(\"reloadpg()\",5000)\r\n" // "document.location.href=\"/2.html\"\r\n" // // "}\r\n" // "setTimeout(\"reloadpg()\",5000)\r\n" // // "</script>\r\n" "</body>" "</html>" };转化为完整的16进制数组
09-19
<table align="center" border="0" cellpadding="0" cellspacing="0" class="tableForm" style="table-layout: fixed;"> <colgroup> <col width="80" /> <col /><!--hide4phone.start--> <col width="80" /> <col width="380" /><!--hide4phone.end--> </colgroup> <tbody> <tr> <td style="text-align: right;">&nbsp;<span style="color: rgb(255, 0, 0);">*</span>Subject:</td> <td dbf.type="required" id="dbf.subject">&nbsp;</td> <!--show4phone.start></tr><tr><show4phone.end--> <td style="text-align: right;">&nbsp;Status:</td> <td><span id="mapping.dbf.procXSource">&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Responsor: <span id="mapping.dbf.responsorSource">&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Participants: <span id="mapping.dbf.participantsSource">&nbsp;</span></td> </tr> </tbody> </table> <div>&nbsp;</div> <div style="text-align: center;"> <h1><img src="../common/logo.png" /> [Form Name]</h1> </div> <div>[Design form here, based on the template below, or customized by yourself after the template removed]</div> <table align="center" border="0" cellpadding="0" cellspacing="0" class="tableListBorder" style="table-layout: fixed;"> <colgroup> <col width="130" /> <col /><!--hide4phone.start--> <col width="130" /> <col width="330" /><!--hide4phone.end--> </colgroup> <tbody> <tr> <td colspan="4" colspan4phone="2" dbf.source="" dbf.type="" style="background-color: lightyellow;">&nbsp;<strong>[Brief Information]</strong></td> </tr> <tr> <td class="fieldLabel" style="text-align: center; width: 147px;"><span style="color: red;">*</span>&nbsp;username</td> <td id="username" style="width: 210px;">&nbsp;</td> <!--show4phone.start--> </tr> <tr><!--show4phone.end--> <td class="fieldLabel" style="text-align: center; width: 63px;"><span style="color: red;">*</span>&nbsp;id</td> <td id="ID" style="width: 254px;">&nbsp;</td> </tr> <tr> <td class="fieldLabel" style="text-align: center;">项目名称</td> <td id="项目名称" style="width: 210px;">&nbsp;</td> <td class="fieldLabel" style="text-align: center;">装置名称</td> <td id="装置名称" style="width: 254px;">&nbsp;</td> </tr> <tr> <td class="fieldLabel" style="text-align: center;">Customer Name</td> <td id="CustomerName" style="width: 210px;">&nbsp;</td> <td class="fieldLabel" style="text-align: center;">E-NO/序列号</td> <td id="ENO号" style="width: 254px;">&nbsp;</td> </tr> <tr> <td class="fieldLabel" style="text-align: center;">产品描述</td> <td id="产品描述" style="width: 210px;">&nbsp;</td> <td class="fieldLabel" style="text-align: center;">Remark</td> <td id="Remark" style="width: 254px;">&nbsp;</td> </tr> <tr> <td class="fieldLabel" style="text-align: center;">Subject</td> <td id="subjectid" style="width: 210px;">&nbsp;</td> <td class="fieldLabel" dbf.source="" dbf.type="" id="" style="text-align: center;">&nbsp;</td> <td dbf.source="" dbf.type="" id="" style="width: 254px;">&nbsp;</td> </tr> <tr> <td colspan="4" colspan4phone="2" dbf.source="" dbf.type="" style="background-color: lightyellow;"><strong>&nbsp;</strong><strong>[Detailed Information]</strong></td> </tr> </tbody> </table> <div style="text-align: center; margin: 20px 0;">&nbsp; &nbsp; &nbsp; &nbsp; <input id="idslist" name="idslist" type="hidden" /> &nbsp;<input id="sql内容" name="sql内容" type="hidden" /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <strong> <input id="check" name="check" onclick="clickData()" type="button" value="check记录" /> </strong> <strong> <input id="check2" name="check2" onclick="clickData2()" type="button" value="下载结果" /> </strong></div> <!-- ==================== 移动端表格占位(暂不使用)==================== --><!-- ==================== 查询结果表格容器 ==================== --> <div id="resultTableContainer" style="margin-top: 20px; padding: 0 10px; min-height: 20px;"><!-- 动态表格将插入到这里 --></div> <div class="slide4phone2" id="reptable" style="display:none;"> <table align="center" border="0" cellpadding="0" cellspacing="0" class="tableListBorder2" style="width: 1300px;"> </table> </div> <!-- ==================== 核心脚本:查询与渲染 ==================== --><script language="javascript"> function clickData() { if (window.__isQuerying) return; window.__isQuerying = true; try { var enonumber = $("ENO号")?.value ? $("ENO号").value().trim() : ""; if (!enonumber) { alert("请输入搜索内容"); return; } console.log("【原始输入】", enonumber); function escapeSql(str) { return String(str || '').replace(/'/g, "''"); } // ✅ 正确构建模糊匹配模式 const searchPattern = '%' + escapeSql(enonumber) + '%'; // ✅ 清洗字段中的各种隐藏字符 const cleanedField = ` REPLACE( REPLACE( REPLACE( REPLACE( ISNULL([ENO序列号], ''), CHAR(10), ''), CHAR(13), ''), CHAR(9), ''), ' ', '') `; var sql = ` SELECT TOP 100 Subject, Status, 申请人, 申请日期, 产品类别, 其他, type, 内勤, 系统, customer, ProjectName, DeviceName, 新产品, [ENO序列号], 目标价, 数量, 产地, 含税报价, HandlerRemark, Remark, 描述 FROM X_BPM_DWH_819_InquiryLines WHERE ${cleanedField} LIKE '${searchPattern}' ORDER BY 申请日期 DESC `; console.log("【执行SQL】", sql); var rawResult = service("common.js", "getDbsRecords", sql, "array"); let arr = parseServiceResult(rawResult); renderTable(arr); } catch (e) { console.error("查询失败", e); alert("错误:" + (e.message || e)); } finally { window.__isQuerying = false; } } /** * 安全解析 service 返回的结果 * 支持:合法JSON / 非法JSON / JS数组字面量 / 字符串化数组 / null等 */ function parseServiceResult(rawResult) { console.log("【原始返回类型】", typeof rawResult); console.log("【原始内容】", rawResult); // 情况1:已经是数组 if (Array.isArray(rawResult)) { console.log("✅ 已识别为原生数组"); return rawResult; } // 情况2:null/undefined/false if (rawResult == null || rawResult === 'null' || rawResult === 'undefined') { console.warn("⚠️ 返回为空值"); return []; } // 转为字符串处理 let str = String(rawResult).trim(); if (!str) { console.warn("⚠️ 返回空字符串"); return []; } // 情况3:可能是HTML错误页(常见于服务异常) if (str.startsWith('<') || str.includes('<html') || str.toLowerCase().includes('error') || str.includes('Exception')) { console.error("🔴 返回了HTML错误页!", str.substring(0, 200)); throw new Error('服务端错误,请检查SQL语法或联系管理员'); } /** * 数据清洗函数:修复各种非法字符 */ function clean(str) { return str .replace(/\\\\/g, '\\') // 修复多个反斜杠 .replace(/"/g, '\\"') // 先转义双引号 .replace(/'/g, '"') // 单引号 → 双引号 .replace(/\\"/g, '"') // 还原正常引号 .replace(/\\n/g, '\\n') // 显式换行 .replace(/\\r/g, '\\r') .replace(/\\t/g, '\\t') .replace(/\n/g, '\\n') .replace(/\r/g, '\\r') .replace(/\t/g, '\\t') .replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F]/g, '') // 移除控制字符 .replace(/^"(\[.*\])"$/, '$1') // 去掉 "[...]" 外层引号 .replace(/^"(\{.*\})"$/, '$1') .replace(/,\s*}/g, '}') // 去除对象尾部逗号 .replace(/,\s*]/g, ']'); // 去除数组尾部逗号 } // 尝试多种解析方式 const parsers = [ // 方式1:直接JSON.parse () => JSON.parse(str), // 方式2:清洗后再解析 () => JSON.parse(clean(str)), // 方式3:作为JS表达式执行(仅限可信环境) () => new Function(`return (${str});`)(), // 方式4:进一步清理后尝试 () => JSON.parse(clean(str).replace(/""/g, '"').replace(/"\s+:/g, '":').replace(/:\s+"/g, ':"')) ]; for (let i = 0; i < parsers.length; i++) { try { const result = parsers[i](); if (Array.isArray(result)) { console.log(`✅ 第 ${i+1} 种方式解析成功`); return result; } // 兼容 { data: [...] } 结构 if (result && Array.isArray(result.data)) return result.data; if (result && Array.isArray(result.rows)) return result.rows; } catch (e) { console.warn(`📌 方式 ${i+1} 解析失败`, e.message); } } // 情况5:手动解析简单二维数组字符串 [[...],[...]] if (/^\[\s*$$[^$$]*$\s*(,\s*$$[^$$]*$)*\s*\]$/.test(str)) { try { console.log("🔍 检测到疑似二维数组字符串,尝试手动解析"); const rows = str.match(/$[^$$]*$/g) || []; return rows.map(row => { return row.replace(/^\[/, '').replace(/\]$/, '') .split(',') .map(field => field.trim().replace(/^"(.*)"$/, '$1').replace(/^'(.*)'$/, '$1')); }).filter(r => r.length > 0); } catch (e) { console.error("手动解析失败", e); } } // 所有方式都失败 console.error("🔴 所有解析方式均失败", { raw: rawResult, cleaned: clean(str) }); throw new Error('返回数据格式异常,无法解析。请检查SQL是否正确或联系开发人员。'); } /** * 渲染查询结果为表格 */ function renderTable(arr) { var container = document.getElementById("resultTableContainer"); if (!container) return; // 清空容器 container.innerHTML = ''; if (!arr || arr.length === 0) { container.innerHTML = ` <p style="text-align:center;color:#999;font-style:italic;padding:20px;"> 📭 未找到匹配的数据。 </p> `; return; } // 创建表格 var table = document.createElement('table'); table.className = 'tableListBorder'; table.style.width = '100%'; table.style.tableLayout = 'fixed'; table.setAttribute('border', '1'); table.setAttribute('cellpadding', '6'); table.setAttribute('cellspacing', '0'); table.style.fontFamily = 'Arial, sans-serif'; table.style.fontSize = '13px'; // 表头 var thead = document.createElement('thead'); var headerRow = document.createElement('tr'); var headers = [ "Subject", "Status", "申请人", "申请日期", "产品类别", "其他", "类型", "内勤", "系统", "客户", "项目名称", "装置名称", "新产品", "E-NO/序列号", "目标价", "数量", "产地", "含税报价", "处理备注", "备注", "描述" ]; headers.forEach(function(text) { var th = document.createElement('th'); th.style.backgroundColor = '#f5f5f5'; th.style.textAlign = 'center'; th.style.padding = '10px'; th.style.whiteSpace = 'nowrap'; th.style.fontWeight = 'bold'; th.textContent = text; headerRow.appendChild(th); }); thead.appendChild(headerRow); table.appendChild(thead); // 表体 var tbody = document.createElement('tbody'); arr.forEach(function(row, index) { if (!row || !Array.isArray(row) && typeof row !== 'object') { console.warn(`第 ${index} 行数据异常`, row); return; } var tr = document.createElement('tr'); Object.values(row).forEach(function(cell) { var td = document.createElement('td'); td.style.padding = '8px'; td.style.borderTop = '1px solid #eee'; td.style.wordBreak = 'break-word'; td.style.maxWidth = '200px'; td.textContent = cell == null ? '' : String(cell).trim(); tr.appendChild(td); }); tbody.appendChild(tr); }); table.appendChild(tbody); container.appendChild(table); console.log(`✅ 成功渲染 ${arr.length} 行数据`); } </script> <div id="resultTableContainer" style="margin-top: 20px; overflow-x: auto;">&nbsp;</div> 完整修复以上 [ENO序列号] 匹配问题 数值不能完全匹配
最新发布
10-22
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值