Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MathJax在复制我的方程——为什么我要修复这个问题,如何修复这个问题?_Javascript_Html_Mathjax - Fatal编程技术网

Javascript MathJax在复制我的方程——为什么我要修复这个问题,如何修复这个问题?

Javascript MathJax在复制我的方程——为什么我要修复这个问题,如何修复这个问题?,javascript,html,mathjax,Javascript,Html,Mathjax,我有以下页面(css无用--省略): HTML: 命令行 MathJax.Hub.Config({ 扩展:[”http://cs.jsu.edu/mathjax-ext/contrib/forminput/forminput.js"], tex2jax:{inlineMath:[['$','$'],['\\(','\\)']}, TeX:{extensions:[“AMSmath.js”,“AMSsymbols.js”]} }); 命令行v.2.0&复制;2015年——康纳·奥布莱恩 现在使用

我有以下页面(css无用--省略):

HTML:


命令行
MathJax.Hub.Config({
扩展:[”http://cs.jsu.edu/mathjax-ext/contrib/forminput/forminput.js"],
tex2jax:{inlineMath:[['$','$'],['\\(','\\)']},
TeX:{extensions:[“AMSmath.js”,“AMSsymbols.js”]}
});
命令行v.2.0&复制;2015年——康纳·奥布莱恩
现在使用$\LaTeX$!
JavaScript:

$( document ).ready(function(){
    window.t = false;
    $("#col").on("change",function(){
        var d = $q(this).value;
        $q("#out").innerHTML+="<p>Color: <span style=\"color: "+d+";\">"+d.toUpperCase()+", "+Color.hexToRgb(d).v+" - "+linkC("/color "+d,"Use")+"</span>.</p>";
    });
    $("#cmd")[0].addEventListener("keypress",function(e){
        if(e.key=="Enter"){
            submit();
        }
    });
    $("#out").html("Initializing...");
    window.init = function(){
        var d = [br(3)+
                "********* INITIALIZED *********",
                "* Welcome to the experimental *",
                "* JavaScript command line! It *",
                "* will execute exactly like a *",
                "* handheld calculator, having *",
                "* the capacity to execute the *",
                "*        user's inputs.       *",
                "*                             *",
                "* ~-~-~-~-~-~-~-~-~-~-~-~-~-~ *",
                "*                             *",
                "* Type 'help' for environment *",
                "*           commands.         *",
                "*******************************"+br(),
                "<hr>"],i=0;
        function x(d,i){
            $q("#out").innerHTML += (d[i++])||"";
            $q("#out").innerHTML += br();
            if(i<d.length){ setTimeout(x,20,d,i); } else {
                window.t = true;
            }
        }
        setTimeout(x,500,d,i);
    }
    init();
});

function br(x){
    var o = "",x=x||1;
    for(i=0;i<x;i++){
        o+="<br>";
    }
    return o;
}

function $q(i){
    return $(i)[0];
}

function submit(){
    if(t){
        var $out = getOutput();
        if($out){
            var d = "<p id='a"+(el++)+"'>"+$out+"</p>";
            $q("#out").innerHTML += d;
            lines.push(d);
            marker = lines.length;
            location = "file:///C:/Users/Conor%20O%27Brien/Documents/Programming/command%20line%20v.2.0/main.html#sQ";
            $q("#cmd").focus();
            console.log(el);
            MathJax.Hub.Queue(["Typeset",MathJax.Hub,"a"+el+""]);
        }
    }
}

var pi = Math.PI;
var e  = Math.E;

function Reval(str){
    with(Math){var tstr = str.replace(/(.+)\^(.+)/g,"Math.pow($1,$2)");return eval(tstr);}
}

function Dval(str){
    return "$"+str.replace(/(.+)\^(.+)/g,"{$1}^{$2}")+"$";
}

var el = 0;

function getOutput(){
    var val = $q("#cmd").value;
    if(val=="help"){
        $q("#out").innerHTML = "";
        return "<h1>HELP</h1><h2>Commands</h2>"+
        [
            "= help",
            "  - displays help document.",
            "= open {target}",
            "  - displays {target}'s contents.",
            "  - {target} values:",
            "    * options: adjust options with subpoints (i.e. options.{prop} = {1/0} [1=True,0=False])"
        ].join(br())+"<hr>";
    } else if(val=="cls"||val=="clear"){
        $q("#out").innerHTML = "";
        return "Cleared.";
    } else if(val.substr(0,5)=="open "){
        var target = val.substr(5,val.length);
        console.log(target);
        switch(target){
            case "options":

            break;
            default:
                return new Error(target+" is not a valid target!");
            break;
        }
    } else {
        try {
            console.log(val,Reval(val));
            return Dval(val)+br()+"<span class='ans'>"+Reval(val)+"</span>";
        } catch(e) {
            return e;
        }
    }
}
$(文档).ready(函数(){
window.t=false;
$(“#col”)。关于(“更改”,函数(){
var d=$q(此).value;
$q(“#out”).innerHTML+=”Color:“+d.toUpperCase()+”,“+Color.hexToRgb(d.v+”-“+linkC(“/Color”+d,“Use”)+”

”; }); $(“#cmd”)[0]。addEventListener(“按键”,函数(e){ 如果(e.key==“输入”){ 提交(); } }); $(“#out”).html(“初始化…”); window.init=函数(){ 变量d=[br(3)+ “*******已初始化**********”, “*欢迎来到实验*”, “*JavaScript命令行!它*”, “*将像*”一样执行, “*手持计算器,具有*”, “*执行*的能力”, “*用户输入。*”, "* *", "* ~-~-~-~-~-~-~-~-~-~-~-~-~-~ *", "* *", “*为环境*”键入“帮助”, “*命令。*”, “********************************”+br(), “
”],i=0; 函数x(d,i){ $q(“#out”).innerHTML++=(d[i++])||; $q(“#out”).innerHTML+=br();
如果(i你的方法有几个问题。MathJax重新处理整个文档的原因是因为你在
submit()
函数中增加了
el
。你使用了一个后增量,
el++
,因此

var d = "<p id='a"+(el++)+"'>"+$out+"</p>";
您传递的ID没有引用新添加的
标记,事实上,没有这样的ID。当找不到ID时,MathJax处理整个页面

至于数学的重复,那是因为您正在使用
innerHTML
更新输出区域。这样做会破坏现有的DOM并用新的DOM替换它(一种非常低效的方法)。在这样做时,您切断了MathJax与DOM中现有数学之间的连接,因此MathJax不知道该数学已被处理。因此,当它重新处理页面时,它会尝试再次排版该数学(虽然在本例中它只创建预览,但这是您视为重复的数学)

最好不要使用
innerHTML
替换包含MathJax输出的元素的内容。除了断开MathJax的输出之外,您还将丢失MathJax用于上下文菜单和缩放函数之类的事件处理程序。最好使用显式DOM操纵命令,如
document.createElement()
appendChild()
。这需要更多的工作,但效率会更高,特别是对于较长的文档,并且不会导致MathJax问题


MathJax实际上为以这种方式创建元素提供了一些支持,因此您可以充分利用这些元素,而不是完全手工操作。

您是否尝试过清理浏览器缓存?几周前出现了一个问题,暂时导致了版本混合,从而导致了这个特定的问题。未来注意:cdn.MathJax.org即将出现如果要终止其生命周期,请查看迁移提示。
var d = "<p id='a"+(el++)+"'>"+$out+"</p>";
MathJax.Hub.Queue(["Typeset",MathJax.Hub,"a"+el+""]);