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