网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
11月20日漏签0天
javascript吧 关注:269,169贴子:906,422
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 28回复贴,共1页
<<返回javascript吧
>0< 加载中...

javascript代码格式排版

  • 只看楼主
  • 收藏

  • 回复
  • 宠奶奶爱夫人
  • for
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
因为学习需要,并且有时下载回来的javascript源代码需要格式排版分析,所以写了一个用于格式代码的页面!只要把javascript代码复制进框框里就可以了!!需要注意的是:
1、因觉得c语言格式更加清晰,所以比较偏好类似c语言格式
2、如果是自调用匿名函数,请把前面的“(”去掉,因为我处理圆括号“()”里面的代码按原来格式直接输出,所以如果圆括号里面有函数原型,将不做格式化,不想改了,我比较懒!!!那就一部一部份输入吧。
3、还有一些情况没有遇到,所以有错大家就帮忙改下!谢谢了!



  • 宠奶奶爱夫人
  • for
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>js代码自动排版</title>
<style type="text/css">
<!--
#myText {
height: 600px;
width: 98%;
}
-->
</style>
<script type="text/javascript">
function delSpace(index,str) //忽略空白字符,返回连续空白字符的最后一个空白字符索引值
{
while(index<str.length)
{
index+=1;
if(/\s/.test(str.substr(index,1))) continue; //下一个是否空白字符
break; //不是空白则退出循环
}
return (index-1); //最后一个空白字符索引值
}
function nextChar(index,str,char) //查找下一个与char相等的字符,并返回位置索引
{
while(index<str.length)
{
index+=1;
if(str.substr(index,1)==char) return index;
}
}
function ifEqual(index,str,char) //上一个是否为char
{
var length=char.length;
for(var j=index-1;j>=0;j--)
{
if(/\S/.test(str.substr(j,1))) //是否非空
{
if(str.substr(j-length+1,length).toLowerCase()==char) return true;
else return false;
}
}
}
function findEqual(index,str,char) //查找前面是否存在字符串char
{
var length=char.length;
var num=50; //向上查找最高深度,太深影响性能
for(var j=index-length;j>=0;j--)
{
if(num<1) return false;
if(str.substr(j,length).toLowerCase()==char) return true;
else
{
num-=1;
continue;
}
}
return false;
}
function findEqualIndex(index,str,char) //查找前面是否存在字符串char
{
var length=char.length;
var num=50; //向上查找最高深度,太深影响性能
for(var j=index-length;j>=0;j--)
{
if(num<1) return -1;
if(str.substr(j,length).toLowerCase()==char) return j;
else
{
num-=1;
continue;
}
}
return -1;
}
function quota(index,str,char)
{
if(char=='\"')
{
var a=0; //保存“\”后面的字符索引
for(var i=index+1;i<str.length;i++)
{
if(str.substr(i,1)=='\\')
{
i+=1; //如果是“\”,直接跳过\*,*为任何字符
a=i;
}
else if(str.substr(i,1)=='\"')
{
if(((i-1)!=a) && (str.substr(i-1,1)!='\\')) return i;
else if((i-1)==a) return i;
}



2025-11-20 02:48:19
广告
不感兴趣
开通SVIP免广告
  • 宠奶奶爱夫人
  • for
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
}
}
else if(char=='\'')
{
var b=0;
for(var i=index+1;i<str.length;i++)
{
if(str.substr(i,1)=='\\') //如果是“\”,直接跳过\*,*为任何字符
{
i+=1;
b=i;
}
else if(str.substr(i,1)=='\'')
{
if(((i-1)!=b) && (str.substr(i-1,1)!='\\')) return i;
else if((i-1)==b) return i;
}
}
}
return (str.length-1);
}
function test()
{
var allCode=document.getElementById('myText').value; //获取要排序的代码
var newString=''; //用于保存排好的代码
var bigBrackets=0; //大括号个数,用于计数代码缩进
var spaceChar=/\s/; //空白字符正则表达式
var brackets=0; //圆括号
var midBrackets=0; //中括号
var doubleQuota=false; //双引号
var singleQuota=false; //单引号
String.prototype.repeat=function(number) //给String原型添加方法,用于重复输出字符,number为重复次数
{
return new Array(number+1).join(this); //给(number+1)个空白字符用String自身当分隔符连接起来
};
for(var i=0;i<allCode.length;i++)
{
var s=allCode.substr(i,1);
if(spaceChar.test(s)) //是否为空白字符
{
if(i>0) newString+=' '; //不是第一个字符则加一个空格
i=delSpace(i,allCode); //最后一个空白字符索引值
continue;
}
if(s=='/') //如果字符等于“/”
{
var num1=i;
var str1='=';
if(ifEqual(num1,allCode,str1)) //遍历上一个字符是否为“=”,如果是表明是正则表达式,则查找下一个“/”
{
i=num2=nextChar(num1,allCode,s); //查找下一个“/”
newString+=allCode.slice(num1,num2+1); //输出num1到num2之间的字符
continue;
}
else if(allCode.substr(num1+1,1)=='/' || allCode.substr(num1+1,1)=='*') //是否为注释
{
var wrapReg=/[\n\r]/; //换行
var nextCh=num1+1;
while(nextCh<allCode.length)
{
nextCh+=1;
if(wrapReg.test(allCode.substr(nextCh,1))) //是否换行
{
newString+=allCode.slice(num1,nextCh); //输出num1到换行之间的字符
i=delSpace(nextCh,allCode); //跳过空白字符
if(!((allCode.substr(i+1,1)=='}') || (allCode.substr(i+1,1)=='{'))) //如果下一个字符不是“}”或“{”,换行
newString+='\n'+' '.repeat(bigBrackets*4);
break;
}
}
continue;
}
}
if(s=='(')
{
brackets+=1;
var num1=i;
for(var j=num1+1;j<allCode.length;j++)



  • 宠奶奶爱夫人
  • for
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
{
if(allCode.substr(j,1)=='\"' || allCode.substr(j,1)=='\'')
j=quota(j,allCode,allCode.substr(j,1)); //如果中间有引号则跳过
if(allCode.substr(j,1)==')') brackets-=1;
else if(allCode.substr(j,1)=='(') brackets+=1;
if(brackets==0) //输出相对应括号里所有的字符
{
newString+=allCode.slice(num1,j+1);
i=j;
break;
}
else if(j==(allCode.length-1)) //如果到结束还没有匹配的圆括号,则直接输出直到结束
{
i=j;
if(brackets!=0) newString+=allCode.slice(num1,j+1);
}
}
continue;
}
if(s=='[')
{
midBrackets+=1;
var num1=i;
for(var j=num1+1;j<allCode.length;j++)
{
if(allCode.substr(j,1)=='\"' || allCode.substr(j,1)=='\'') j=quota(j,allCode,allCode.substr(j,1)); //如果中间有引号则跳过
if(allCode.substr(j,1)==']') midBrackets-=1;
else if(allCode.substr(j,1)=='[') midBrackets+=1;
if(midBrackets==0)
{
newString+=allCode.slice(num1,j+1);
i=j;
break;
}
}
continue;
}
if(s=='\"' || s=='\'')
{
var num1=i;
i=quota(i,allCode,s);
newString+=allCode.slice(num1,i+1);
continue;
}
if(s==';' || s==',')
{
i=delSpace(i,allCode);
if(allCode.substr(i+1,2)=='//') //如果下一个为注释则不换行
{
newString+=s+' ';
continue;
}
if(!((allCode.substr(i+1,1)=='}') || (allCode.substr(i+1,1)=='{'))) //如果下一个字符不是“}”或“{”,换行
newString+=s+'\n'+' '.repeat(bigBrackets*4);
else newString+=s;
continue;
}
if(s=='{')
{
var num1=i;
bigBrackets+=1;
i=delSpace(i,allCode);
var str1='=',
str2=')',
str3='try',
str4=':',
str5='return',
str6='(',
str7='catch';
if(ifEqual(num1,allCode,str1)) //如果上一个为“=”,不换行
{
if(allCode.substr(i+1,1)=='}') //下一个是否为“}”
{
newString+=s+' ';
continue;
}
else newString+=s;
}
else if(ifEqual(num1,allCode,str2)) //如果上一个为“)”
{
if(findEqual(num1-1,allCode,str6)) //查找前面是否有“(”
{
var nextCha=findEqualIndex(num1-1,allCode,str6);
if(ifEqual(nextCha,allCode,str1) || ifEqual(nextCha,allCode,str7)) newString+=s;
else newString+='\n'+' '.repeat((bigBrackets-1)*4)+s;
}
}
else if((ifEqual(num1,allCode,str3))||(ifEqual(num1,allCode,str4))||(ifEqual(num1,allCode,str5))) newString+=s;
else newString+='\n'+' '.repeat((bigBrackets-1)*4)+s;
if(allCode.substr(i+1,2)=='//' || allCode.substr(i+1,1)=='}') //如果下一个为注释则不换行
{
newString+=' ';
continue;
}
newString+='\n'+' '.repeat(bigBrackets*4);
continue;
}
if(s=='}')
{
var num1=i;
bigBrackets-=1;
if(bigBrackets<0) bigBrackets=0;
i=delSpace(i,allCode);
var str1='{';
if(ifEqual(num1,allCode,str1)) newString+=s;
else newString+='\n'+' '.repeat(bigBrackets*4)+s;
if(allCode.substr(i+1,2)=='//' || allCode.substr(i+1,1)=='}' || allCode.substr(i+1,1)==';'|| allCode.substr(i+1,1)==',') //如果下一个为注释或...则不换行
continue;
newString+='\n'+' '.repeat(bigBrackets*4);
continue;
}
newString+=s;
}
document.getElementById('myText').value=newString;
}
</script>
</head>
<body>
<center>
<h3>请在下面输入您要排序的源代码:</h3>
<textarea id="myText">
</textarea>
<input type="button" value="确定" onclick="test()"/>
</center>
</body>
</html>


  • 宠奶奶爱夫人
  • for
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
上面就是页面源代码,欢迎大家复制使用,哈哈


  • 宠奶奶爱夫人
  • for
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
晕,竟然占了三层楼,大家只好一层楼一层楼分开复制下来,否则会出错的


  • 沁心2013
  • ifelse
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
虽不明 但觉厉


  • 宠奶奶爱夫人
  • for
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
呜呜,怎么没人要用呢?它的功能就是用来把较乱的js代码重新按照一定格式排版!我给个链接:http://pan.baidu.com/share/link?shareid=10956&uk=3761088005,大家试试用下吧


2025-11-20 02:42:19
广告
不感兴趣
开通SVIP免广告
  • 死亡冰剑
  • while
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
- - 不适合js 括号包含函数很多


  • 次碳酸钴
  • Number
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
。。。重新发吧,第一楼就贴链接。。。最好也截图放1楼


  • 9菜牜馬矿
  • Boolean
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


@次碳酸钴
整天签到,你这个能用不啊?



  • 宠奶奶爱夫人
  • for
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
不好意思,function findEqual(index,str,char)和
function findEqualIndex(index,str,char)中的var num=50; //向上查找最高深度,太深影响性能
应该为var num=500;甚至更大。因为字符超出50个字符数会找不到!不好意思!因为现在在学习ajax,没时间改完善了。sorry!
我已经改为1000重新上传到百度网盘了



登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 28回复贴,共1页
<<返回javascript吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示