Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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 “我该怎么做?”;编纂;及;美化;密码?_Javascript_Jquery - Fatal编程技术网

Javascript “我该怎么做?”;编纂;及;美化;密码?

Javascript “我该怎么做?”;编纂;及;美化;密码?,javascript,jquery,Javascript,Jquery,我创建了一些javascript代码,可以将代码转换为文本(codify),这样人们就可以复制和粘贴显示的代码。我想知道的是,如何美化代码本身(启用块级别、缩进等) 到目前为止: $(".codify").each(function(){ var text = $(this).html(); $(this).html(text.replace('<', '&lt;').replace('>', '&gt;').replace("/","&#47

我创建了一些javascript代码,可以将代码转换为文本(codify),这样人们就可以复制和粘贴显示的代码。我想知道的是,如何美化代码本身(启用块级别、缩进等)

到目前为止:

$(".codify").each(function(){
    var text = $(this).html();
    $(this).html(text.replace('<', '&lt;').replace('>', '&gt;').replace("/","&#47;").replace("/n", "<br />")); 
});
$(“.codify”)。每个(函数(){
var text=$(this.html();
$(this.html(text.replace('',).replace(“/”,“/;”).replace(“/n”,“
”); });
通常我们使用javascript插件,你可以在StackOverflow和中找到很多关于这个主题的问题

但是这个想法是,因为您不能使用普通的
文本区域
来为代码着色,因为该元素不支持着色,所以这个想法是使用
来输入代码,然后在
中呈现解析后的代码

我过去使用过的一个库是

您可以在那里进行测试,并在应用程序中使用库,如(并使用默认选项,因为有“百万”个选项):

您可以看到他们的主页源代码,也可以使用他们的“cazilion”选项


所有其他答案都有几个其他选项,选择一个最适合您的应用程序

一个解决方案是编写一个JavaScript函数,在jQuery元素列表中循环,输出缩进HTML,例如:

function jQueryToHTML(dom, indent) {
    var code = "", indent = (indent || "") + "\t";
    dom.each(function(){
        var el = $(this);
        if(this.nodeType == 3) {
            code += indent + this.textContent;
        } else {
            code += indent + el.prop("outerHTML").match(/^<[a-zA-Z]+(>|.*?[^?]>)/g)[0] + "\n";
            code += jQueryToHTML(el.contents(), indent);
            code += indent + "</" + el.prop("tagName").toLowerCase() + ">" + "\n";
        }
    });
    return code;
}

indentedCode = jQueryToHTML($("#theElement"));
函数jQueryToHTML(dom,缩进){
变量代码=”,缩进=(缩进“)+“\t”;
dom.each(函数(){
var el=$(本);
if(this.nodeType==3){
代码+=缩进+this.textContent;
}否则{
代码+=缩进+el.prop(“outerHTML”).match(/^ |.*.[^?]>)/g)[0]+“\n”;
code+=jQueryToHTML(el.contents(),缩进);
代码+=缩进+“”+“\n”;
}
});
返回码;
}
indentedCode=jQueryToHTML($(“#theElement”);

只需使用html
标记;)或者对空格使用
,对tab使用(查找)我认为唯一的问题是现在会显示任何空白。有没有一种方法可以避免这种情况呢?啊,但是你不仅要编纂代码,还要美化代码?在这种情况下,您应该编写一种解析器,它可以识别块级别等。但这有点超出了您的问题范围。我会的,哇,这里的人很残忍。已经有一张反对票和两张接近票了!是的,你的问题有点太宽泛了。到目前为止,帮助您的唯一可能是编写一个如何编写解析器的指南。如果你再详细一点,用一个具体的问题写一个更具体的问题,你会得到很多帮助。首先开始解析器的设计,然后展示您所做的工作,如果您发现了无法克服的障碍,请返回。你会惊讶于这里的人是多么善良;)
function jQueryToHTML(dom, indent) {
    var code = "", indent = (indent || "") + "\t";
    dom.each(function(){
        var el = $(this);
        if(this.nodeType == 3) {
            code += indent + this.textContent;
        } else {
            code += indent + el.prop("outerHTML").match(/^<[a-zA-Z]+(>|.*?[^?]>)/g)[0] + "\n";
            code += jQueryToHTML(el.contents(), indent);
            code += indent + "</" + el.prop("tagName").toLowerCase() + ">" + "\n";
        }
    });
    return code;
}

indentedCode = jQueryToHTML($("#theElement"));