'; } document.getElementById('presets').innerHTML = html; // 绑定点击 var nodes = document.querySelectorAll('.preset'); for (var j = 0; j < nodes.length; j++) { (function(node) { node.addEventListener('click', function() { document.getElementById('width').value = node.getAttribute('data-w'); document.getElementById('height').value = node.getAttribute('data-h'); document.getElementById('f').dispatchEvent(new Event('submit', {bubbles: true, cancelable: true})); }); })(nodes[j]); } } var errorMsg = document.getElementById('error-msg'); var resultArea = document.getElementById('result-area'); var btnMain = document.getElementById('btn-main'); document.getElementById('f').addEventListener('submit', function(e) { e.preventDefault(); errorMsg.textContent = ''; btnMain.disabled = true; try { var w = parseInt(document.getElementById('width').value); var h = parseInt(document.getElementById('height').value); var dpi = parseInt(document.getElementById('dpi').value); if (!w || !h || !dpi || w <= 0 || h <= 0 || dpi <= 0) { errorMsg.textContent = '请填写有效的宽/高/DPI'; return; } var mmPerPx = 25.4 / dpi; var wMm = w * mmPerPx; var hMm = h * mmPerPx; var wInch = wMm / 25.4; var hInch = hMm / 25.4; var ratio = w / h; var orientation = Math.abs(ratio - 0.75) < 0.05 ? '2:3 标准竖版' : Math.abs(ratio - 1) < 0.05 ? '1:1 正方形' : Math.abs(ratio - 0.667) < 0.05 ? '2:3 竖版' : ratio.toFixed(3) + ':1 自定义'; resultArea.classList.add('show'); document.getElementById('result-meta').textContent = '计算结果 (基于 ' + dpi + ' DPI)'; var html = '' + '' + '' + '' + '' + '
项目像素 (px)毫米 (mm)英寸 (inch)
宽' + w + ' px' + wMm.toFixed(2) + ' mm' + wInch.toFixed(3) + ' inch
高' + h + ' px' + hMm.toFixed(2) + ' mm' + hInch.toFixed(3) + ' inch
' + '
' + '宽高比: ' + orientation + '
' + '对角线: ' + (Math.sqrt(w*w + h*h) * mmPerPx).toFixed(2) + ' mm / ' + (Math.sqrt(w*w + h*h) / dpi).toFixed(3) + ' inch
' + '打印尺寸 (300 DPI): ' + (w * 25.4 / 300).toFixed(2) + ' × ' + (h * 25.4 / 300).toFixed(2) + ' mm' + '
'; document.getElementById('result-content').innerHTML = html; } catch (err) { errorMsg.textContent = '错误: ' + err.message; } finally { btnMain.disabled = false; } }); renderPresets(); })();