<math>元素在手动编写时可以正常工作,但在使用js动态创建时不能正确呈现:

let math = document.createElement('math');
math.setAttribute('display', 'block');

let mfrac = document.createElement('mfrac');
let ms1 = document.createElement('ms');
let ms2 = document.createElement('ms');

ms1.textContent = 'this';
ms2.textContent = 'doesn\'t';

mfrac.appendChild(ms1);
mfrac.appendChild(ms2);

math.appendChild(mfrac);

document.body.appendChild(math);
<!DOCTYPE html>
<html>

<body>
  <math display="block">
        <mfrac>
            <ms>this</ms>
            <ms>works</ms>
        </mfrac>
    </math>
</body>

</html>

未渲染的分数的屏幕截图:

enter image description here

通过插入新的子元素来更新现有的<math>个元素根本不会更改它们的外观,尽管判断器中的文档发生了更改.

推荐答案

math及其相关元素是两个"它现在在HTML规范中,但JS仍然只允许您将它们构建为命名空间的XML元素"之一(另一个是svg),因此您需要将createElementNShttp://www.w3.org/1998/Math/MathML命名空间一起使用.如果你不这样做,它就不能算作"真正的"数学元素.

const MathNS = `http://www.w3.org/1998/Math/MathML`;
const createMathElement = (tag) => document.createElementNS(MathNS, tag);

const math = createMathElement(`math`);
math.setAttribute(`display`, `block`);

let mfrac = createMathElement(`mfrac`);
let ms1 = createMathElement(`ms`);
let ms2 = createMathElement(`ms`);

ms1.textContent = `this`;
ms2.textContent = `also works`;

mfrac.appendChild(ms1);
mfrac.appendChild(ms2);
math.appendChild(mfrac);

document.body.appendChild(math);
<!DOCTYPE html>
<html>

<body>
  <math display="block">
        <mfrac>
            <ms>this</ms>
            <ms>works</ms>
        </mfrac>
    </math>
</body>

</html>

Javascript相关问答推荐

使用print This时, map 容器已在LeafletJS中初始化

我不知道为什么setwritten包装promise 不能像我预期的那样工作

网页自检测外部元素无法加载

有没有可能使滑动img动画以更快的速度连续?

处理时间和字符串时MySQL表中显示的日期无效

屏幕右侧屏障上的产卵点""

material UI按钮组样式props 不反射

JQuery Click事件不适用于动态创建的按钮

为什么我的getAsFile()方法返回空?

如何在ASP.NET项目中使用Google Chart API JavaScript将二次轴线值格式化为百分比

Use Location位置成员在HashRouter内为空

为什么这个.add.group({})在教程中运行得很好,但在我的游戏中就不行了?

自定义确认组件未在vue.js的v菜单内打开

如何限制显示在分页中的可见页面的数量

如何在HTMX提示符中设置默认值?

为什么我不能使用其同级元素调用和更新子元素?

如何压缩图像并将其编码为文本?

限制数组中每个元素的长度,

在HTML中使用meta标记来指定定制元数据以用于使用JavaScript进行检索是不是一个坏主意?

如何从图表中映射一组图表-js使用REACT