You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript从HTML中获取原始LaTeX习题字符串?

解决JS提取LaTeX习题原始字符串的问题

核心思路:把原始LaTeX字符串单独存在DOM元素的自定义属性里,避开JS读取渲染后的混合DOM内容。

1. PHP生成HTML时存储原始LaTeX

生成每个习题项的HTML时,给容器元素加data-latex属性,存入未渲染的原始LaTeX字符串,注意用htmlspecialchars转义特殊字符,防止破坏HTML结构:

纯LaTeX习题示例

$rawLatex = '$$\int_0^1 x^2\,dx$$';
// 转义LaTeX中的特殊字符,确保HTML属性值合法
$escapedLatex = htmlspecialchars($rawLatex, ENT_QUOTES);

echo '<div class="exercise-item" data-latex="' . $escapedLatex . '">';
echo '<input type="checkbox" class="exercise-checkbox">';
echo '<select class="exercise-select">';
echo '<option value="1">难度1</option>';
echo '<option value="2">难度2</option>';
echo '</select>';
echo '<div class="exercise-content">' . renderLatexToHtml($rawLatex) . '</div>'; // 这里是LaTeX转可显示HTML的逻辑
echo '</div>';

文本+LaTeX习题示例

$rawLatex = '计算下列定积分:$$\int_0^1 x^2\,dx$$';
$escapedLatex = htmlspecialchars($rawLatex, ENT_QUOTES);

echo '<div class="exercise-item" data-latex="' . $escapedLatex . '">';
echo '<input type="checkbox" class="exercise-checkbox">';
echo '<select class="exercise-select">';
echo '<option value="1">难度1</option>';
echo '<option value="2">难度2</option>';
echo '</select>';
echo '<div class="exercise-content">' . renderTextLatexToHtml($rawLatex) . '</div>'; // 处理文本+LaTeX的渲染逻辑
echo '</div>';

2. JS提取选中习题的原始LaTeX

直接读取data-latex属性,不用解析DOM中的混合内容:

// 获取所有选中的习题复选框
const checkedExercises = document.querySelectorAll('.exercise-checkbox:checked');

// 提取对应的原始LaTeX字符串
const selectedLatexList = Array.from(checkedExercises).map(checkbox => {
    // 找到当前习题的容器元素
    const exerciseContainer = checkbox.closest('.exercise-item');
    // 直接读取data-latex属性值,就是原始的LaTeX字符串
    return exerciseContainer.dataset.latex;
});

// 现在selectedLatexList就是干净的原始LaTeX数组,可直接写入rmd文件
console.log(selectedLatexList);

为什么之前会得到混乱内容?

之前的逻辑应该是直接读取了习题容器内的文本或innerHTML,里面包含了下拉框的HTML代码、渲染后的LaTeX元素(比如MathJax生成的DOM节点),所以拿到的是混合了各种内容的拼接字符串。而把原始LaTeX存在自定义属性里,相当于给每个习题存了一份“纯净备份”,JS直接取这份备份就不会有干扰。

内容的提问来源于stack exchange,提问作者Pierluigi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 04:18:22