有时候我们在使用自定义标签的时候会遇到这样一个问题:我们已经找到这个字段在数据库里面的位置,并且已经成功将这个字段取出来了,可是这个字段并不是我们要的格式,下面看两个例子:
例子一:
软件的下载地址是以字符串的方式存放的,然后在字符串中用分割符区分不同地址,比如说:"下载地址1|200710/20071022165122306.doc$$$下载地址2|http://www.163.com",如果我们想要把这两个下载地址输出来,那么就必须结合js才能首先了。下面我们来看一下如何解决这个问题。 添加自定义函数标签如下: 函数名:比如{MY_fenge} 参数:一个,在下载内容页模板调用的时候为{MY_fenge({$SoftID})} 查询语句:select DownloadUrl from PE_Soft where SoftID={input(0)} 标签内容: {Loop} {Infobegin} <script language="JavaScript"> var str="{$Field(0,Text,0,0,0)} " //{$Field(0,Text,0,0,0)}为数据库中的下载地址, // 以"下载地址1|200710/20071022165122306.doc$$$下载地址2|http://www.163.com"为例
var str1=str.split("$$$") //对下载地址进行第一次分割,按照$$$拆开,然后存放在数组str1中 //str1[0]=下载地址1|200710/20071022165122306.doc //str1[1]=下载地址2|http://www.163.com. var str2; //定义一个新的数组,因为还需要第二次分割才能得出正确的地址. for(i=0;i<str1.length;i++){ //这个循环是算出有多少个下载地址的,str1.length是数组的长度. str2 = str1[i].split("|") //第二次分割,也就是把str1[0]=下载地址1|200710/20071022165122306.doc //再进行一次分隔,我们要取的是200710/20071022165122306.doc这个值 var count=i+1 //i是0开始的.所以这里加一,用来对下载地址进行编号. //第二次分隔后,str2[0]=下载地址1,str2[1]=200710/20071022165122306.doc,str2[1]即我们要取的内容 document.write ("下载地址"+count+":<a href='"+str2[1]+"'>"+str2[1]+"</a><br>"); } </script> {Infoend} {/Loop}
前台显示的效果是:
下载地址1:200710/20071022165122306.doc 下载地址2:http://www.163.com
这样,我们运用了js的split函数,成功的将这两个地址分隔出来,按照我们的要求输出。
例子二:
我们需要取出供求频道的输出供求类型,可是数据库里面并不是直接存放供求类型名称,而是用相应的数字来表示相应的类型:0=供应 1=求购 2=紧急求购 3=合作 4=招商代理,在数据库中类似这种情况是比较多的,下面我们来看一下如何解决这个问题:
问题:
以下是我的函数标签: <table>{Loop} {Infobegin} <tr> <td>{$Field(1,Num,0,0)}</td> /**{$Field(1,Num,0,0)} 值为 0 1 2 3 4/**/ <td>{$Field(2,Text,0,0,0)}</td> </tr> {Infoend} {/Loop} </table> 其中,<td>{$Field(1,Num,0,0)}</td> 这段为输出供求类型,类型共有四种 0 1 2 3 4 (0=供应 1=求购 2=紧急求购 3=合作 4=招商代理),而我想把得到的 0 1 2 3 4 转换成文字(如把0转换成供应),请问如何能做到?
解决方法:
图片形式: 先做几个图片, <table>{Loop} {Infobegin} <tr> <td><img src="{$Field(1,Num,0,0)}.gif"></td> /**{$Field(1,Num,0,0)} 值为 0 1 2 3 4/**/ <td>{$Field(2,Text,0,0,0)}</td> </tr> {Infoend} {/Loop} </table>
文字形式: <table>{Loop} {Infobegin} <tr> <td> <script language="JavaScript"> function greeting() { var today = new Date(); var hrs = {$Field(1,Num,0,0)}; document.writeln("<CENTER>"); if (hrs == 0) document.write("供应"); else if (hrs == 1) document.write("求购"); else if (hrs == 2) document.write("紧急求购"); else if (hrs == 3) document.write("合作"); else if (hrs == 4) document.write("诚招代理"); } greeting(); </script> </td> <td>{$Field(2,Text,0,0,0)}</td> </tr> {Infoend} {/Loop} </table> |