首页
关于
友链
推荐
肥啾解析
百度一下
肥啾GPT
Search
1
宝塔面板登录 phpMyAdmin 提示服务器和客户端上指示的HTTPS之间不匹配
253 阅读
2
Customer complaints evolve with in-car tech
184 阅读
3
测试
147 阅读
4
所谓关系
90 阅读
5
解决Edge浏览器提示“此网站已被人举报不安全”
89 阅读
默认分类
网游架设
手机游戏
python
PHP
Mysql
VBA
C++
JAVA
java基础
生产管理
计划控制
ERP系统开发
APS排产
MES研究
考勤系统
CPA
财管
实务
经济法
战略
审计
税法
藏书架
古典名著
世界名著
编程秘籍
攻防渗透
经管书籍
大佬传经
风雅读物
考试相关
心情格言
拾玉良言
外文报刊
外刊随选
Facebook
Twitter
China Daily
软考
登录
Search
标签搜索
期刊读物
古文
何瑜明
累计撰写
99
篇文章
累计收到
153
条评论
首页
栏目
默认分类
网游架设
手机游戏
python
PHP
Mysql
VBA
C++
JAVA
java基础
生产管理
计划控制
ERP系统开发
APS排产
MES研究
考勤系统
CPA
财管
实务
经济法
战略
审计
税法
藏书架
古典名著
世界名著
编程秘籍
攻防渗透
经管书籍
大佬传经
风雅读物
考试相关
心情格言
拾玉良言
外文报刊
外刊随选
Facebook
Twitter
China Daily
软考
页面
关于
友链
推荐
肥啾解析
百度一下
肥啾GPT
搜索到
4
篇与
的结果
2025-04-26
PDF搜索优化
<body> <div class="container"> <h1>PDF搜索</h1> <div class="control-panel"> <button id="selectFolderBtn" class="btn">选择文件夹</button> <input type="file" id="folderInput" webkitdirectory directory multiple> <input type="text" id="searchInput" placeholder="输入关键词搜索..."> <button id="clearBtn" class="btn">清除</button> </div> <div class="progress-container"> <div class="progress-bar" id="progressBar"></div> </div> <div class="status-area" id="status"> 准备就绪,请选择包含PDF的文件夹 </div> <div id="results"> <div class="no-results">没有找到PDF文件</div> </div> <div id="pdfPreview"> <div class="preview-header"> <h3 id="previewTitle"></h3> <button id="closePreview">×</button> </div> <iframe id="pdfViewer"></iframe> </div> </div> <script> document.addEventListener('DOMContentLoaded', async function() { const selectFolderBtn = document.getElementById('selectFolderBtn'); const folderInput = document.getElementById('folderInput'); const searchInput = document.getElementById('searchInput'); const clearBtn = document.getElementById('clearBtn'); const resultsDiv = document.getElementById('results'); const statusDiv = document.getElementById('status'); const progressBar = document.getElementById('progressBar'); const pdfPreview = document.getElementById('pdfPreview'); const previewTitle = document.getElementById('previewTitle'); const pdfViewer = document.getElementById('pdfViewer'); const closePreview = document.getElementById('closePreview'); let allFiles = []; let currentWorker = null; // 打开或创建 IndexedDB function openDB() { return new Promise((resolve, reject) => { const request = indexedDB.open("PDFCacheDB", 1); request.onupgradeneeded = function(event) { const db = event.target.result; if (!db.objectStoreNames.contains("pdfFiles")) { db.createObjectStore("pdfFiles", { keyPath: "path" }); } }; request.onsuccess = () => resolve(request.result); request.onerror = () => reject(request.error); }); } // 从缓存中加载数据(仅加载PDF文件) async function loadFromCache() { const db = await openDB(); const tx = db.transaction("pdfFiles", "readonly"); const store = tx.objectStore("pdfFiles"); const request = store.getAll(); return new Promise((resolve, reject) => { request.onsuccess = () => { const allFiles = request.result; // 过滤出PDF文件 const pdfFiles = allFiles.filter(file => file.name.toLowerCase().endsWith('.pdf')); db.close(); resolve(pdfFiles); // 只返回PDF文件 }; request.onerror = () => reject(request.error); }); } // 保存数据到缓存 async function saveToCache(files) { const db = await openDB(); const tx = db.transaction("pdfFiles", "readwrite"); const store = tx.objectStore("pdfFiles"); await Promise.all(files.map(file => store.put(file))); await tx.complete; db.close(); } // 显示文件列表(仅显示PDF文件) function displayFiles(files) { if (files.length === 0) { resultsDiv.innerHTML = '<div class="no-results">没有找到匹配的PDF文件</div>'; return; } const fileList = document.createElement('ul'); fileList.className = 'file-list'; files.forEach(file => { const fileItem = document.createElement('li'); fileItem.className = 'file-item'; fileItem.innerHTML = ` <div class="file-info"> <div class="file-name">${file.name}</div> <div class="file-path">${file.path}</div> </div> <div class="file-size">${formatFileSize(file.size)}</div> `; fileItem.addEventListener('click', () => previewPDF(file)); fileList.appendChild(fileItem); }); resultsDiv.innerHTML = ''; resultsDiv.appendChild(fileList); } // 格式化文件大小 function formatFileSize(bytes) { if (bytes === 0) return '0 Bytes'; const units = ['Bytes', 'KB', 'MB', 'GB']; const i = Math.floor(Math.log(bytes) / Math.log(1024)); return `${parseFloat((bytes / Math.pow(1024, i)).toFixed(2))} ${units[i]}`; } // 预览PDF文件 function previewPDF(file) { previewTitle.textContent = file.name; pdfViewer.src = URL.createObjectURL(file.fileObject); pdfPreview.style.display = 'block'; } // 重置应用 function resetApp() { allFiles = []; searchInput.value = ''; resultsDiv.innerHTML = '<div class="no-results">没有找到PDF文件</div>'; statusDiv.textContent = '准备就绪,请选择包含PDF的文件夹'; progressBar.style.width = '0%'; pdfPreview.style.display = 'none'; folderInput.value = ''; updateUI(); } // 更新UI状态 function updateUI() { const hasFiles = allFiles.length > 0; searchInput.disabled = !hasFiles; clearBtn.disabled = !hasFiles; } // 事件监听 selectFolderBtn.addEventListener('click', () => folderInput.click()); folderInput.addEventListener('change', handleFolderSelection); searchInput.addEventListener('input', filterFiles); clearBtn.addEventListener('click', async () => { resetApp(); await clearCache(); }); closePreview.addEventListener('click', () => pdfPreview.style.display = 'none'); // 文件夹选择 async function handleFolderSelection(event) { const files = event.target.files; const pdfFiles = Array.from(files).filter(file => file.name.toLowerCase().endsWith('.pdf')).map(file => ({ name: file.name, path: file.webkitRelativePath || file.name, size: file.size, fileObject: file })); statusDiv.textContent = `已选择 ${pdfFiles.length} 个PDF文件`; allFiles = pdfFiles; saveToCache(allFiles); filterFiles(); updateUI(); } // 过滤文件 function filterFiles() { const query = searchInput.value.toLowerCase(); const filtered = allFiles.filter(file => file.name.toLowerCase().includes(query)); displayFiles(filtered); } // 加载缓存数据并显示 const cachedFiles = await loadFromCache(); // 只加载PDF缓存文件 if (cachedFiles.length > 0) { allFiles = cachedFiles; statusDiv.textContent = `已加载缓存PDF文件,共 ${cachedFiles.length} 个PDF`; filterFiles(); // 显示缓存中的PDF文件 updateUI(); } else { statusDiv.textContent = '没有缓存的PDF文件'; } }); </script> </body>
2025年04月26日
2 阅读
0 评论
0 点赞
2025-04-23
javascript运算问题
在js里 "+"是拼接字符串的,而不是逻辑运算符; 数据类型问题: 如果变量是字符串类型,+操作会变成字符串拼接而非数值相加4 建议使用Number()或parseFloat()进行显式转换: javascript Copy Code const planRate = (Number(completedQuantity) / (Number(row.total_quantity) + Number(row.urgent_order_quantity))) * 100 除零错误防护: 当分母为0时会导致Infinity结果46 应增加防护逻辑: javascript Copy Code const denominator = Number(row.total_quantity) + Number(row.urgent_order_quantity); const planRate = denominator !== 0 ? (completedQuantity / denominator) * 100 : 0; 精度处理建议: 使用toFixed()控制小数位数6 javascript Copy Code const planRate = denominator !== 0 ? ((completedQuantity / denominator) * 100).toFixed(2) : 0; 特殊值处理: 建议增加null/undefined检测4 javascript Copy Code const safeValue = (val) => isNaN(Number(val)) ? 0 : Number(val); const denominator = safeValue(row.total_quantity) + safeValue(row.urgent_order_quantity); 公式优化建议: 可参考完成率的标准计算公式:(已完成量/计划总量)×100%6 紧急订单量是否应计入分母需根据业务逻辑确认16 建议使用Chrome开发者工具的Console面板或Node.js环境进行分步调试,使用console.log输出中间变量值检查问题根源4。
2025年04月23日
1 阅读
0 评论
0 点赞
2025-04-06
悬停隐藏URL
<a href="javascript:void(0);" onclick="redirectTo('https://example.com')">隐藏URL的链接</a> <script> function redirectTo(url) { window.location.href = url; } </script> 示例try { if (item.isHeader == "1") { str = "<li class='menu-header'>" + item.name + "</li>"; $(parent).append(str); if (item.childMenus != "") { initMenu(item.childMenus, parent); } } else { item.icon == "" ? item.icon = "" : item.icon = item.icon; if (item.childMenus == "") { // 修改普通菜单项的href为JavaScript伪协议,并用data-url存储真实地址 str = `<li><a href="javascript:void(0)" data-url="${item.url}"><i class='icon-font'>${item.icon}</i><span>${item.name}</span></a></li>`; $(parent).append(str); } else { // 父级菜单项移除真实href,保留点击功能用于展开 str = `<li><a href="javascript:void(0)"><i class='icon-font'>${item.icon}</i><span>${item.name}</span><i class='icon-font icon-right'></i></a> <ul class='menu-item-child' id='menu-child-${item.id}'></ul></li>`; $(parent).append(str); var childParent = $("#menu-child-" + item.id); initMenu(item.childMenus, childParent); } } } catch (e) { console.error(e); } // 在文档加载后绑定点击事件(放在代码末尾或单独脚本中) $(function() { // 普通菜单跳转逻辑 $('body').on('click', 'a[data-url]', function(e) { e.preventDefault(); window.location.href = $(this).data('url'); }); // 子菜单展开逻辑(根据现有功能补充,示例如下) $('body').on('click', 'li > a:has(+ .menu-item-child)', function(e) { e.preventDefault(); $(this).next('.menu-item-child').slideToggle(); }); });
2025年04月06日
1 阅读
0 评论
0 点赞
2025-04-06
响应式无刷新传值
function displaySchedule() { const tbody = document.querySelector('#scheduleTable tbody'); tbody.innerHTML = ''; console.log("check1", scheduleData); // 按生产日期分组显示 const productionGroups = [...new Set(scheduleData.map(item => item.productionDate))].sort((a, b) => new Date(a) - new Date(b) ); for (const productionDate of productionGroups) { // 获取该生产日期的所有排产记录 const productions = scheduleData.filter(item => item.productionDate === productionDate); // 更新标题行的colspan为7(原6列+新增1列) const headerRow = document.createElement('tr'); headerRow.style.backgroundColor = '#f0f0f0'; headerRow.innerHTML = ` <td colspan="8"> <strong>生产日期: ${productionDate}</strong> ${productions.some(item => item.isLate) ? '<span class="warning"> (有超期订单)</span>' : '<span class="on-time"> (全部按时)</span>'} </td> `; tbody.appendChild(headerRow); // 添加排产记录 for (const production of productions) { const order = rawData.find(item => item.productId === production.productId && item.deliveryDate === production.deliveryDate ); if (order) { const row = document.createElement('tr'); if (production.isLate) row.classList.add('warning'); // 在原有6列后添加查询列 row.innerHTML = ` <td>${production.productId}</td> <td>${production.quantity}</td> <td>${production.deliveryDate}</td> <td>${production.dailyMax}</td> <td>${production.sl}</td> <td>${production.productionDate}</td> <td>${production.isLate ? '是' : '否'}</td> <td class="product-info">加载中...</td> `; tbody.appendChild(row); // 根据productId查询数据库 fetch('get_product_info.php', { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({ productId: production.productId }) }) .then(response => response.json()) .then(data => { const infoCell = row.querySelector('.product-info'); if (data.success) { // 示例显示产品名称和库存 infoCell.innerHTML = ` <div>内径${data.neijing} 嘴: ${data.zui} ${data.gangsi} /${data.nanyi}</div> `; } else { infoCell.textContent = '查询失败'; } }) .catch(error => { row.querySelector('.product-info').textContent = '服务异常'; console.error('产品查询失败:', error); }); } } } }
2025年04月06日
1 阅读
0 评论
0 点赞
0:00