打印

[asp] 请帮我看看这一句asp+js怎么改,谢谢(已解决)

为什么内容里边有多余的空格或换行之类的,就不行?
<div id="s_brief" style="line-height:24px;">
         <%
         aaa=trim(rs("s_brief"))
         bbb="成立于1959年的家乐福集团是大卖场业态的首创者,是欧洲第一大零售商,世界第二大国际化零售连锁集团。现拥有11,000多家营运零售单位,业务范围遍及世界30个国家和地区。 集团以三种主要经营业态引领市场:大型超市,超市以及折扣店。此外,家乐福还在一些国家发展了便利店和会员制量贩店。2004年集团税后销售额增至726.68亿欧元,员工总数超过43万人。 2005年,家乐福在《财富》杂志编排的全球500强企业中排名第22位。"
         if len(trim(rs("s_brief")))>128 then
         response.write left(trim(rs("s_brief")),128)&"…<a href=""javascript:void(0)"" onMouseDown=""document.getElementById('s_brief').innerHTML='"&aaa&"';"">[完整]</a>"
         else
         response.write trim(rs("s_brief"))
         end if%>
</div>

点“完整”就没有反应
如果这里换成这样innerHTML='"&bbb&"';"">[完整]</a>",就没问题了
---------------------------------------------------------------------------------------------------------------------------------
貌似主要原因是变量aaa的值里边有空格和换行什么的
如果我让aaa="一串字符串,一串字符串,一串字符串。"
这样就一切正常了

但变量aaa的值里边有空格和换行什么的是不可避免的,我得保持内容的格式,怎么解决这个问题?

----------------------------------------------------------------------------------------------------------------------------
我希望初始正确的显示是——
成立于1959年的家乐福集团是大卖场业态的首创者,是欧洲第一大零售商,世界第二大国际化零售连锁集团。现拥有11,000多家营运零售单位,业务范围遍及世界30个国家和地区。
集团以三种主要经营业态引领市场:大型超市,超市以及折扣店。此外,家乐福还在一些…[完整]

点击“完整”之后则显示成这样——
成立于1959年的家乐福集团是大卖场业态的首创者,是欧洲第一大零售商,世界第二大国际化零售连锁集团。现拥有11,000多家营运零售单位,业务范围遍及世界30个国家和地区。
集团以三种主要经营业态引领市场:大型超市,超市以及折扣店。此外,家乐福还在一些国家发展了便利店和会员制量贩店。2004年集团税后销售额增至726.68亿欧元,员工总数超过43万人。
2005年,家乐福在《财富》杂志编排的全球500强企业中排名第22位。

[ 本帖最后由 309503 于 2008-8-12 17:23 编辑 ]
我不明白为什么一定要明白我不明白的~~~
aaa有内容没?
变量需要附值才会有反应。
乐于助人、严格管理、言多必失。无知者无罪。Keep your waiting,I am back.
编程资源:http://book.kuhanzhu.com
对管理有异议,请前往事务区进行投诉。请勿PM。
可能是你的单双引号的问题,你试着把response.write 改成<%= ........%>
这样的形式试试 这样就不会混乱了  主要问题看javascript的变量怎么加到asp的环境中了

[ 本帖最后由 skmtpsh 于 2008-8-12 10:38 编辑 ]
沉默寡言
aaa=trim(rs("s_brief"))
比如说aaa有200个汉字,现在他会正常显示前128个加…[完整]

但我现在的问题是,我希望点[完整],就变成这样
<div id="s_brief">完整的200个汉字</div>

点[完整]页面显示没有变化,还是——显示前128个加…[完整]
我不明白为什么一定要明白我不明白的~~~

TOP

还在为头像烦恼?还在为不能关注好友动态烦忧?快来蓝色理想家园吧!
或在div里面加个<span id="s_brief2"></span> 把程序的标签也改一下 试试
沉默寡言

TOP

引用:
原帖由 skmtpsh 于 2008-8-12 10:41 发表
或在div里面加个 把程序的标签也改一下 试试
我本来就是用的两个DIV,点完整隐藏一个显示另一个,那时是没问题的。
但我现在想成上面的,就是只用一个DIV,只切换其中的内容
我不明白为什么一定要明白我不明白的~~~

TOP

好像是asp的程序逻辑有问题,跟JS没关~~~~~~
我不明白为什么一定要明白我不明白的~~~

TOP

刚才给你测试了 你把段落间的空行和回车行删掉 就好了
沉默寡言

TOP



 提示:您可以先修改部分代码再运行
[ 本帖最后由 skmtpsh 于 2008-8-12 11:11 编辑 ]
沉默寡言

TOP

删掉空行和回车这不可能,内容都是编辑器编辑的

我希望初始正确的显示是——
成立于1959年的家乐福集团是大卖场业态的首创者,是欧洲第一大零售商,世界第二大国际化零售连锁集团。现拥有11,000多家营运零售单位,业务范围遍及世界30个国家和地区。

集团以三种主要经营业态引领市场:大型超市,超市以及折扣店。此外,家乐福还在一些…[完整]

点击“完整”之后则显示成这样——
成立于1959年的家乐福集团是大卖场业态的首创者,是欧洲第一大零售商,世界第二大国际化零售连锁集团。现拥有11,000多家营运零售单位,业务范围遍及世界30个国家和地区。

集团以三种主要经营业态引领市场:大型超市,超市以及折扣店。此外,家乐福还在一些国家发展了便利店和会员制量贩店。2004年集团税后销售额增至726.68亿欧元,员工总数超过43万人。

2005年,家乐福在《财富》杂志编排的全球500强企业中排名第22位。
我不明白为什么一定要明白我不明白的~~~

TOP

搂主 等调试好了 发上来看看阿   我得吃饭了
沉默寡言

TOP

复制内容到剪贴板
代码:
<div id="s_brief" style="line-height:24px;">
<%
aaa="成立于1959年的家乐福集团是大卖场业态的首创者,是欧洲第一大零售商,世界第二大国际化零售连锁集团。现拥有11,000多家营运零售单位,业务范围遍及世界30个国家和地区。集团以三种主要经营业态引领市场:大型超市,超市以及折扣店。此外,家乐福还在一些国家发展了便利店和会员制量贩店。2004年集团税后销售额增至726.68亿欧元,员工总数超过43万人。2005年,家乐福在《财富》杂志编排的全球500强企业中排名第22位。"
if len(trim(aaa))>128 then
    response.write left(trim(aaa),128)&"…<a href=""javascript:void(0)"" onMouseDown=""document.getElementById('s_brief').innerHTML='"+aaa+"';"">[完整]</a>"
else
    response.write trim(aaa)
end if%>
</div>
学无止境

TOP

修改一下JS代码看看,主要是引号。
复制内容到剪贴板
代码:
"…<a href='javascript:void(0)' onmousedown=document.getElementById('s_brief').innerHTML='"&aaa&"';>[完整]</a>"

TOP

跟单双引号没关系,主要原因是变量aaa的值里边有空格和换行什么的
如果我让aaa="一串字符串,一串字符串,一串字符串。"
这样就一切正常了

但变量aaa的值里边有有空格和换行什么的是不可避免的,怎么解决这个问题?
我不明白为什么一定要明白我不明白的~~~

TOP

写个函数,用特殊符号替换空格,回车,显示的时候才恢复过来咯
我是菜菜,有很多问题问大家`谢谢您回答哦

TOP

用之前要先过滤一下非法字符的嘛,否则不用什么换行什么的,一个 ' 就死翘翘了

过滤函数去搜吧,一大堆
学无止境

TOP

复制内容到剪贴板
代码:
<div id="s_brief" style="line-height:24px;">
  <%
  aaa="成立于1959年的家乐福集团是大卖场业态的首创者,是欧洲第一大零售商,世界第二大国际化零售连锁集团。现拥有11,000多家营运零售单位,业务范围遍及世界30个国家和地区。集团以三种主要经营业态引领市场:大型超市,超市以及折扣店。此外,家乐福还在一些国家发展了便利店和会员制量贩店。2004年集团税后销售额增至726.68亿欧元,员工总数超过43万人。2005年,家乐福在《财富》杂志编排的全球500强企业中排名第22位。"
  if len(aaa)>128 then
    response.write left(aaa,128)
    response.write "<span id='s_brief2' style='display:none'>"&right(aaa,len(aaa)-128)&"</span>"
    response.write "<span id='s_brief3'>..."
    response.write "<a href=""javascript:void(0)"" onMouseDown=""document.getElementById('s_brief2').style.display='';"
    response.write "document.getElementById('s_brief3').style.display='none';"">[完整]</a></span>"
  else
    response.write aaa
  end if%>
</div>
改了一下。。用了另一个方法。。隐藏和显示项
我想。。这个比较好用吧

[ 本帖最后由 ltroy 于 2008-8-12 13:13 编辑 ]
我是菜菜,有很多问题问大家`谢谢您回答哦

TOP

Itroy:我现在用的就是俩DIV,点完整,隐藏一个显示另一个

但我想改成只用一个DIV的,点完整切换DIV里边的内容
我不明白为什么一定要明白我不明白的~~~

TOP

楼主你好。
onMouseDown=""document.getElementById('s_brief').innerHTML='"&aaa&"';"">
变量aaa里面有回车就会出现问题。

你应该在这个页面的地方加上如下代码:
<form name="from1" style="display:none;">
<textarea name="aaa"><%=aaa%></textarea>
</from>
然后修改onMouseDown=""document.getElementById('s_brief').innerHTML='"&aaa&"';"">

onMouseDown=""document.getElementById('s_brief').innerHTML=document.form1.aaa.value;"">

TOP

luofei614:谢谢。你的方法好像可以哦!

不过能不能告诉我为什么我最初的方式一有回车就会出问题呢?非到放到textarea里边中转一下吗?
我不明白为什么一定要明白我不明白的~~~

TOP

变量复赋值时是不可以回车的

就好像
aa="sldfjldfjl
dfjsdlf"

这样的形式的赋值一定有错的了

用textarea的时候。。回车 相当如
aa="sldfjldfjl"&vbcrlf&"dfjsdlf"
我是菜菜,有很多问题问大家`谢谢您回答哦

TOP

引用:
原帖由 309503 于 2008-8-12 13:37 发表
Itroy:我现在用的就是俩DIV,点完整,隐藏一个显示另一个

但我想改成只用一个DIV的,点完整切换DIV里边的内容
不是太明白你说的。。
复制内容到剪贴板
代码:
<div id="s_brief" style="line-height:24px;">
         <%
         aaa=trim(rs("s_brief"))
         aaa=replace(aaa,vbCrLf, "<br />")
         bbb="成立于1959年的家乐福集团是大卖场业态的首创者,是欧洲第一大零售商,世界第二大国际化零售连锁集团。现拥有11,000多家营运零售单位,业务范围遍及世界30个国家和地区。 集团以三种主要经营业态引领市场:大型超市,超市以及折扣店。此外,家乐福还在一些国家发展了便利店和会员制量贩店。2004年集团税后销售额增至726.68亿欧元,员工总数超过43万人。 2005年,家乐福在《财富》杂志编排的全球500强企业中排名第22位。"
         if len(trim(rs("s_brief")))>128 then
         response.write left(trim(rs("s_brief")),128)&"…<a href=""javascript:void(0)"" onMouseDown=""document.getElementById('s_brief').innerHTML='"&aaa&"';"">[完整]</a>"
         else
         response.write trim(rs("s_brief"))
         end if%>
</div>
在你最原始的代码里加了 aaa=replace(aaa,vbCrLf, "<br />")

但除了注意回车,还在其它的特殊符号,单引号,双引号。。等等的

附送一个简单的过滤函数~
复制内容到剪贴板
代码:
function ConvertHTML(str) '过滤字符串
    if str<>"" then
        ConvertHTML=replace(str, "&", "&#38")
        ConvertHTML=replace(ConvertHTML, ";", "&#59")
        ConvertHTML=replace(ConvertHTML, "(", "&#40")
        ConvertHTML=replace(ConvertHTML, ")", "&#41")
        ConvertHTML=replace(ConvertHTML, "<", "&lt;")
        ConvertHTML=replace(ConvertHTML, ">", "&gt;")
        ConvertHTML=replace(ConvertHTML,chr(34),"&quot;")
        ConvertHTML=replace(ConvertHTML,chr(39), "&#39")
        ConvertHTML=replace(convertHTML,vbCrLf, "<br />")
    end if
end function
= =" 今天太闲了。。

[ 本帖最后由 ltroy 于 2008-8-12 17:04 编辑 ]
我是菜菜,有很多问题问大家`谢谢您回答哦

TOP

谢谢Itroy,谢谢楼上各位。我明白了!
就这一句,我啥都明白了——
变量复赋值时是不可以回车的

就好像
aa="sldfjldfjl
dfjsdlf"
-------------------------
另,我原来用的方式是两个DIV,初始DIV-1只显示128个字符加“完整”按钮,另一个DIV-2默认隐藏,里边是完整内容。
我点“完整”按钮后,DIV-1隐藏,DIV-2显示。看上去的效果跟我这帖子想要的效果其实是一样的

我发这个帖子本来是想改一下方式,只用一个DIV,点“完整”切换DIV中的内容
但现在发现这种方式比我原本的代码要多一些,所以决定还是用原来的好了
我不明白为什么一定要明白我不明白的~~~

TOP

再次谢谢Itroy
我不明白为什么一定要明白我不明白的~~~

TOP

我对我的答案补充一下: 楼主问为什么要放在textarea中转化一次 也许你看了我下面的例子会明朗许多。
asp:
response.write aaa
这里的aaa传递的值里有回车是可以的
javascript:
document.write(aaa)
这里的aaa传递值里面有回车也是可以的
再看下面一个例子
<script>
document.write('<%=aaa%>');
</script>
这里的aaa中有回车是不可以的。
原因:
asp是在服务器端运行的,javascript是在客户端运行的,上面段代码是先运行asp代码 再在客户端运行javascript代码 所以如果asp运行结果中出现了回车就会导致javascript的错误。
而第一个和第二个例子为什么不出错,因为第一个全是asp代码都是在服务器端同步运行的。第二个都是javascript代码 都是在客户端同步运行的
像解决第三个例子里面有回车的方法就是用<textarea>转化一次。
本人文字表述能力不好 不知你明白了不

TOP

引用:
原帖由 309503 于 2008-8-12 17:15 发表
谢谢Itroy,谢谢楼上各位。我明白了!
就这一句,我啥都明白了——
变量复赋值时是不可以回车的

就好像
aa="sldfjldfjl
dfjsdlf"
-------------------------
另,我原来用的方式是两个DIV,初始DIV-1只显示 ...
申明一下。。。我的名字 是 Ltroy  是L 不是I  

说明一下。。我17楼的回帖就用div-总里包括两个span,span-1只显示头128字的,span-2里有除掉头128字的全部内容
span-2默认是隐藏的。。
代码好像比你那个少哦~~

[ 本帖最后由 ltroy 于 2008-8-13 01:34 编辑 ]
我是菜菜,有很多问题问大家`谢谢您回答哦

TOP