diff --git a/assets/app.js b/assets/app.js index d6074e9..b9022a6 100644 --- a/assets/app.js +++ b/assets/app.js @@ -833,17 +833,26 @@ } // 渲染"各试卷独立满分"列表 + // 注意:#fullScoresHint 必须位于 #fullScoresBox 之外(见 index.php), + // 否则 box.innerHTML 覆盖会销毁它,下面的 textContent 赋值会抛 "Cannot set properties of null"。 + // 这里仍保留 null 守卫,避免任何 DOM 结构变动导致整个设置弹窗打不开。 + function setFullScoresHint(text) { + const hint = $('#fullScoresHint'); + if (hint) hint.textContent = text; + } function renderFullScores(scores) { const box = $('#fullScoresBox'); if (!box) return; if (!state.projects.length) { box.innerHTML = '暂无试卷,请先连接卷王系统并选择问卷'; + setFullScoresHint('给某卷填入数字即可单独覆盖默认满分;留空=用默认'); return; } // 排除文件夹项:模式为文件夹的无可答卷 const surveys = state.projects.filter(p => !((p.mode || '').toLowerCase().includes('folder'))); if (!surveys.length) { box.innerHTML = '尚未获取到可答卷'; + setFullScoresHint('给某卷填入数字即可单独覆盖默认满分;留空=用默认'); return; } box.innerHTML = surveys.map(p => { @@ -853,7 +862,7 @@ '' + ''; }).join(''); - $('#fullScoresHint').textContent = '默认分值为空时使用上方"默认满分";填写即单独覆盖该卷'; + setFullScoresHint('默认分值为空时使用上方"默认满分";填写即单独覆盖该卷'); } /* ---------------- 名单 ---------------- */ diff --git a/index.php b/index.php index 4c73aab..46c4b73 100644 --- a/index.php +++ b/index.php @@ -211,9 +211,11 @@ $rosterCount = Roster::count();
- 未选中试卷时,此处为空;选中某套试卷后保存即在设置中为该卷单独设定满分 + 未选中试卷时,此处为空;选中某套试卷后保存即在设置中为该卷单独设定满分
-

给某卷填入数字即可单独覆盖默认满分;留空=用默认

+ +

给某卷填入数字即可单独覆盖默认满分;留空=用默认