寻求高手相助修改一段js代码

软件和网站开发以及相关技术探讨
回复
头像
ubuntu.
帖子: 179
注册时间: 2009-07-15 14:03
系统: debian/testing/kde
来自: 河南
联系:

寻求高手相助修改一段js代码

#1

帖子 ubuntu. » 2015-02-08 12:12

自己修改了一段html代码,原代码如下:

代码: 全选

<style>.pl .tindex1{padding:5px;width:90%;border:1px solid #CCC;background:url(http://bbs.asiaidc.net/static/image/postbg/2.jpg);line-height:28px}
.pl .tindex1 h3{margin-bottom:10px;padding-left:0;border-bottom:1px #ccc dotted;text-align:center}
.cl1:after{clear:both;display:block;visibility:hidden;height:0;content:"."}
.cl1{zoom:1}
.list-h li{float:left;overflow:hidden;padding-left:22px;width:560px;height:26px;border-bottom:1px dashed #cdcdcd;background:url(http://bbs.asiaidc.net/static/image/common/ico_mulu.png) no-repeat 10px center;color:#f33;text-align:left;font-family:arial}
.list-s li{vertical-align: top; overflow:hidden;padding-left:12px;height:26px;border-bottom:1px dashed #cdcdcd;background:url(http://bbs.asiaidc.net/static/image/common/ico_mulu.png) no-repeat 1px center;color:#f33;font-family:arial}
.list-h li a:visited{color:#800080}
.list-s li a:visited{color:#800080}
</style>

<div align="center">
<div class="tindex1 cl1">

<h3  style="border-bottom: 1px dashed #CDCDCD;">全文导航 <img  style="width: 12px; height: 12px;" src="http://bbs.asiaidc.net/static/image/love/main_spinner.gif" alt="Wonderful directory navigation"/></h3>

<ul class="list-h">  <!-- 这里为横排显示的样式,只有一个<div> -->
<li><a href="#a1" sub="">55555555</a></li>     <!--  #a1 表示贴中要输入的锚点的id ; 55555555 表示要输入的导航标题内容 <li>标签的数量不固定可以增加标题个数-->
<li><a href="#a2" sub="*">666666655555555555555555</a></li>
<li><a href="#a3"  sub="*">77777777999999999999999</a></li>
</ul></div></div></div>

 <!-- 这里以下为竖排显示的样式代码,发贴时选择其中一个  【<div style="vertical-align: ... <ul class="list-s"> <li1><li2><liN><a href ... </ul></div>】数量不固定-->
<div style="vertical-align:top; display: inline-block; text-align:left; margin-right: 10px;"><p style="text-indent:1em;text-align:left"><strong>{1}</strong></p>
<ul class="list-s">
<li><a href="#a1" sub="">55555555</a></li>   <!-- <li>标签的数量同样不固定 -->
<li><a href="#a1" sub="">55555555</a></li>
<li><a href="#a1" sub="">55555555</a></li>
</ul></div></div></div>
这是自己第一次看教程后写的js代码:

代码: 全选

<div>
<style>.pl .tindex1{padding:5px;width:90%;border:1px solid #CCC;background:url(http://bbs.asiaidc.net/static/image/postbg/2.jpg);line-height:28px}
.pl .tindex1 h3{margin-bottom:10px;padding-left:0;border-bottom:1px #ccc dotted;text-align:center}
.cl1:after{clear:both;display:block;visibility:hidden;height:0;content:"."}
.cl1{zoom:1}
.list-h li{float:left;overflow:hidden;padding-left:22px;width:560px;height:26px;border-bottom:1px dashed #cdcdcd;background:url(http://bbs.asiaidc.net/static/image/common/ico_mulu.png) no-repeat 10px center;color:#f33;text-align:left;font-family:arial}
.list-s li{vertical-align: top; overflow:hidden;padding-left:12px;height:26px;border-bottom:1px dashed #cdcdcd;background:url(http://bbs.asiaidc.net/static/image/common/ico_mulu.png) no-repeat 1px center;color:#f33;font-family:arial}
.list-h li a:visited{color:#800080}
.list-s li a:visited{color:#800080}
</style>

<div align="center">
<div class="tindex1 cl1">
<h3 style="border-bottom: 1px dashed #CDCDCD;">精彩导航  <img style="width: 12px; height: 12px;" src="http://bbs.asiaidc.net/static/image/love/main_spinner.gif" alt="Wonderful directory navigation"/></h3>

<script type="text/javascript">   //此处以下为自己学写的代码,打开后不显示内容

function daohangfunction()


var x="{1}";  /* {1}是在编辑帖子时弹出的对话框中输入的DZ代码参数,输入h或s来判断横排还是竖排. 最多支持3个这样的参数,如<li><a href="#{一}"  sub="*">{二}</a></li>这段代码可新建DZ代码用 [li= 参数1的内容]参数2的内容[/li] 表示    */

if (x=="h")

  {

  document.write('<ul class="list-h"><br />' + '[li= id3]参数2的内容111[/li]' + '[li= id4]参数2的内容222222[/li]' +'N个这样的DZ代码' +'</ul></div></div></div>' );

  }else if(x=="s") {

  document.write( '{3}' + '</ul></div></div></div>' ');    /* {3}表示 【<div style="vertical-align: ... <ul class="list-s"> <li1><li2><liN><a href ... </ul></div>】这段代码中的内容*/

  }

    break;

</script>  
由于是书面表达难免有说不明白的地方,大意就是用js判断发贴时输入的是h 还是s ,然后分别输出相应的css和代码.最后如果大家能提供较好的解决方法的话,为表示诚意和感谢本人将送出一款5G的国内优质主机作为回报,免费送给最佳方案提供者!
【数 据 论 坛】
-------------------------------------------------------------------------------------------------------------------------
我的论坛,期待与大家一起交流分享,同成长,共卓越
头像
ubuntu.
帖子: 179
注册时间: 2009-07-15 14:03
系统: debian/testing/kde
来自: 河南
联系:

Re: 寻求高手相助修改一段js代码

#2

帖子 ubuntu. » 2015-02-08 12:18

可能由于浏览器的原因导致重复发贴,请管理员帮忙删除一下其他重复帖.
【数 据 论 坛】
-------------------------------------------------------------------------------------------------------------------------
我的论坛,期待与大家一起交流分享,同成长,共卓越
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: 寻求高手相助修改一段js代码

#3

帖子 astolia » 2015-02-09 11:26

function的语法错了,前后的{}都没有。而且只是定义了function,也没见哪里调用。
https://developer.mozilla.org/en-US/doc ... s/function

x=="s"的判断里面多了一个',导致语法错误

代码: 全选

if (x=="h") {
  document.write('<ul class="list-h"><br />' + '[li= id3]参数2的内容111[/li]' + '[li= id4]参数2的内容222222[/li]' +'N个这样的DZ代码' +'</ul></div></div></div>' );
  }else if(x=="s") {
  document.write( '{3}' + '</ul></div></div></div>');    /* {3}表示 【<div style="vertical-align: ... <ul class="list-s"> <li1><li2><liN><a href ... </ul></div>】这段代码中的内容*/
  }
还有个break,也是语法错误
https://developer.mozilla.org/en-US/doc ... ents/break

这么简单的js,就出了三个语法错误,我都不知道该说什么了

现在的浏览器都内建有js控制台功能了,自己看看控制台里的错误信息,最多再单步调试跟踪走一遍就知道问题出在哪里了
头像
ubuntu.
帖子: 179
注册时间: 2009-07-15 14:03
系统: debian/testing/kde
来自: 河南
联系:

Re: 寻求高手相助修改一段js代码

#4

帖子 ubuntu. » 2015-02-09 14:16

astolia 写了: 这么简单的js,就出了三个语法错误,我都不知道该说什么了
以前从未学习过js这玩意,代码是自己看过一遍简单的教程后自己动手写的,错误肯定是避免不了的,我根据你的提示再修改一下,多谢你的及时提醒! :em06
【数 据 论 坛】
-------------------------------------------------------------------------------------------------------------------------
我的论坛,期待与大家一起交流分享,同成长,共卓越
头像
ubuntu.
帖子: 179
注册时间: 2009-07-15 14:03
系统: debian/testing/kde
来自: 河南
联系:

Re: 寻求高手相助修改一段js代码

#5

帖子 ubuntu. » 2015-02-09 15:47

弱弱的问下astolia大虾:
1.在js中如何阻止自动将输入的

代码: 全选

</div> <li>...  
这些代码自动转译为

代码: 全选

<ul class="list-h"><br />' + '<nobr><li><a href="#"> </a></li></nobr>' +'</ul></div></div></div>
这些字符? 上述代码中正常显示的为js中原有的标签, 转译过的为 在帖子中输入的一些文本,有什么方法不让它自动转译?
2.

代码: 全选

document.write('<ul class="list-h"><br />' + '[li= id3]参数2的内容111[/li]' + '[li= id4]参数2的内容222222[/li]' +'N个这样的DZ代码' +'</ul></div></div></div>' );
请问如何可实现[li= id3]参数2的内容111[/li]可以多次在js代码中出现(这个是列表的个数,有可能一个,也有可能会是N个)
还请多多赐教!另一方面自己也再多查找一下这方面的资料.
【数 据 论 坛】
-------------------------------------------------------------------------------------------------------------------------
我的论坛,期待与大家一起交流分享,同成长,共卓越
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: 寻求高手相助修改一段js代码

#6

帖子 astolia » 2015-02-09 21:30

1、没有自动转义这回事。肯定是后台程序为防止注入给你转换的,跟前台的js没什么关系。要么去改后台程序,要么前台使用的时候用字符串替换给转回来
2、没看懂你想干什么。要多处使用相同ul的话,多次调用定义的daohangfunction函数就是了
头像
ubuntu.
帖子: 179
注册时间: 2009-07-15 14:03
系统: debian/testing/kde
来自: 河南
联系:

Re: 寻求高手相助修改一段js代码

#7

帖子 ubuntu. » 2015-02-09 21:42

astolia 写了:1、没有自动转义这回事。肯定是后台程序为防止注入给你转换的,跟前台的js没什么关系。要么去改后台程序,要么前台使用的时候用字符串替换给转回来
2、没看懂你想干什么。要多处使用相同ul的话,多次调用定义的daohangfunction函数就是了
好的,我会根据你说的情况在斟酌研究一下,多谢您的及时回复!
【数 据 论 坛】
-------------------------------------------------------------------------------------------------------------------------
我的论坛,期待与大家一起交流分享,同成长,共卓越
头像
ubuntu.
帖子: 179
注册时间: 2009-07-15 14:03
系统: debian/testing/kde
来自: 河南
联系:

Re: 寻求高手相助修改一段js代码

#8

帖子 ubuntu. » 2015-02-10 10:47

astolia 写了:要么去改后台程序,要么前台使用的时候用字符串替换给转回来
的确如你所说,在前台帖子中输入

代码: 全选

<a> </div>
这样的标签都会被系统自动转译,刚刚找了一段标签的尖括号转码方面的代码(不知道是否能用),代码如下:

代码: 全选

<script type="text/javascript"> 
 function html_encode(str){   
   var s = "";   
   if(str.length == 0) return "";   
   s = str.replace(/&/g, ">");   
   s = s.replace(/</g, "<");   
   s = s.replace(/>/g, ">");   
   s = s.replace(/ /g, "&nbsp;");   
   s = s.replace(/\'/g, "'");   
   s = s.replace(/\"/g, """);   
   s = s.replace(/\n/g, "<br>");   
   return s;   
 }   
function html_decode(str){   
   var s = "";   
   if(str.length == 0) return "";   
   s = str.replace(/>/g, "&");   
   s = s.replace(/</g, "<");   
   s = s.replace(/>/g, ">");   
   s = s.replace(/&nbsp;/g, " ");   
   s = s.replace(/'/g, "\'");   
   s = s.replace(/"/g, "\"");   
   s = s.replace(/<br>/g, "\n");   
   return s;   
 }   
 window.onload=function(){
   var odiv=document.getElementById("thediv");
   odiv.innerHTML=html_encode("</div>");
 }
 </script>
看到这个有些头大,不知道如何改造利用,我目前的js如下(如果有误恳请修改一下):

代码: 全选

< script type = "text/javascript" > 
	(function daohang() {
	var x = "{1}";      //此处输入h或s,表示横排竖排的两种样式.
	if (x == "h") {
		document.write('<ul class="list-h"><br />' + '{2}' + '</ul></div></div></div>')  // {2}为参数2 <li><a href="#2">222222222</a></li> 多个这样的li元素.
	} else if (x == "s") {
		document.write('{3}' + '</div></div>')  
	}}()); 
< /script>
1. 其中{2} {3} 是DZ代码默认的格式,表示需要输入的参数1,参数2 这样的固定格式,如果直接写在js中不知是否会和js的代码冲突?
2. {2} {3} 中都包含<nobr><li><a href="#2">222222222</a></li></nobr> 这样的html代码,请问如何在js中用字符串替换回来?
如在贴中输入[hp=h]<li><a href="#2">222222222</a></li>[/hp] 查看html源代码则变为了

代码: 全选

<ul class="list-h"><br />'+'<li><a href="#2">222222222</a></li>'+'</ul></div></div></div> 
而导致了代码失效,如何向你说的让js再将字符替换回来?
【数 据 论 坛】
-------------------------------------------------------------------------------------------------------------------------
我的论坛,期待与大家一起交流分享,同成长,共卓越
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: 寻求高手相助修改一段js代码

#9

帖子 astolia » 2015-02-10 13:35

我还是建议你找几本javascript的教程系统地学习一下
如果没有编程基础,可以先看 http://product.dangdang.com/21049601.html
然后可以看 http://product.dangdang.com/23379389.htmlhttp://product.dangdang.com/22628333.html
头像
ubuntu.
帖子: 179
注册时间: 2009-07-15 14:03
系统: debian/testing/kde
来自: 河南
联系:

Re: 寻求高手相助修改一段js代码

#10

帖子 ubuntu. » 2015-02-10 13:59

astolia 写了:我还是建议你找几本javascript的教程系统地学习一下
如果没有编程基础,可以先看 http://product.dangdang.com/21049601.html
然后可以看 http://product.dangdang.com/23379389.htmlhttp://product.dangdang.com/22628333.html
好的,虚心接受你的建议!
【数 据 论 坛】
-------------------------------------------------------------------------------------------------------------------------
我的论坛,期待与大家一起交流分享,同成长,共卓越
mrfazi02
帖子: 3
注册时间: 2015-03-08 1:43

Re: 寻求高手相助修改一段js代码

#11

帖子 mrfazi02 » 2015-03-08 1:47

都是高手中的高手!
头像
ubuntu.
帖子: 179
注册时间: 2009-07-15 14:03
系统: debian/testing/kde
来自: 河南
联系:

Re: 寻求高手相助修改一段js代码

#12

帖子 ubuntu. » 2015-05-01 10:44

mrfazi02 写了:都是高手中的高手!
偶只是菜鸟中的极品,新新鸟一枚,目前羽毛都还没长呢,9 楼 astolia才是真正的大虾! 特此ps一下.
【数 据 论 坛】
-------------------------------------------------------------------------------------------------------------------------
我的论坛,期待与大家一起交流分享,同成长,共卓越
回复