查看: 504|回复: 12

[问与答] vbs从Js提取变量值的问题

[复制链接]
竹子 发表于 2022-10-26 17:48:15 | 显示全部楼层 |阅读模式
本帖最后由 竹子 于 2022-10-26 20:08 编辑

aspVBsfromJs.png
t1.rar (754 Bytes, 下载次数: 2)
xuanxiao 发表于 2022-10-28 09:52:39 | 显示全部楼层
你这个没有任何讨论的意义,我给你做了示范你认证研究下。JS 和ASP的执行顺序你懂了,这个自然就明白了。你现在的问题就是这里,JS的赋值是客户端,没法直接像你说的这样赋值给服务端的ASP。

建议你研究下ASP和JS交互通信的AJAX技术:
ASP+AJAX技术的注册会员程序
http://bbs.ttasp.com/thread-1037-1-1.html
(出处: 天天ASP家园)
xuanxiao 发表于 2022-10-26 18:59:55 | 显示全部楼层
看不清楚 直接代码贴上来或者附件形式上传下文件
 楼主| 竹子 发表于 2022-10-26 19:11:01 | 显示全部楼层
xuanxiao 发表于 2022-10-26 18:59
看不清楚 直接代码贴上来或者附件形式上传下文件

附件已上。
 楼主| 竹子 发表于 2022-10-26 20:05:00 | 显示全部楼层
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>VBs读Js中的变量fcolor测试</title>
</head>

<script language="JavaScript" type="text/JavaScript">

fcolor="black"                                                        //fcolor 在html中用于定义显示字符的颜色值的中间变量,初始值
flag="green"                                                        //用于变换颜色的标志

if(flag=="red") fcolor = "red"                        //标志不同设定变量的不同的颜色值
if(flag=="blue") fcolor = "blue"
if(flag=="green") fcolor = "green"
if(flag=="yellow") fcolor = "yellow"

</SCRIPT>

Js中的变量直接引用无效:<% ="fcolor="&fcolor %><P></P>
<%
tcolor="<SCRIPT>document.write(fcolor)</SCRIPT>"        'tcolor 提取在 JS 中设定的颜色的过渡变量 fcolor
%>

在 VBs 中提取的 Js 中的变量 tcolor:<% =tcolor %><P></P>                        <!--显示提取的变量-->
验证变量值与欲设定的值的符合性: ? tcolor="green": <% =tcolor="green" %><P></P>
<%

'tcolor="blue"                                '不采用提取的变量,而直接设定颜色值就能在下面第47行正常显示字体颜色。

%>
最终用于显示的变量dcolor:<% =dcolor %><P></P>
字体显示颜色:

<body>

    <TR>
      <TD><b><font size="4" color="<% =tcolor %>">字体颜色 </font></b><font size="4"></font> </TD>
    </TR>

        <p></p>
       
</body>

</html>
xuanxiao 发表于 2022-10-26 21:53:07 | 显示全部楼层
竹子 发表于 2022-10-26 20:05
VBs读Js中的变量fcolor测试

1666792317070.png

对于客户端来说,JS的赋值本身就可以直接显示在浏览器页面了,你为什么要转下告诉服务端,然后再解析到网页呢?
 楼主| 竹子 发表于 2022-10-26 22:28:17 | 显示全部楼层
本帖最后由 竹子 于 2022-10-26 22:36 编辑
xuanxiao 发表于 2022-10-26 21:53
对于客户端来说,JS的赋值本身就可以直接显示在浏览器页面了,你为什么要转下告诉服务端,然后再解析 ...


1.我是改别人的模板,需作进一步改造、处理,但对 Js 不熟,想用 VBs 作后续处理。
2.测试发现 <% =变量 %> 能在 html 标签内部带入参数,而 <script> =变量 </script> 好像无效,所以产生我的这个问题。
初入此路望别见笑。

现在不解的是,tcolor 已经在屏幕上显示为 正确的 “blue"了,表明 fcolor 的值已经正确传递过来,
为什么 tcolor="blue" 还为 false 呢?

谢谢!

aspVBsfromJs1.png
xuanxiao 发表于 2022-10-27 10:07:03 | 显示全部楼层
服务端实现对字体颜色的改变很简单:
  1. <div style="color:<%="red"%>" id="ttasp">天天ASP家园</div>
复制代码


1.png

客户端JS实现对字体颜色的改变:
  1. <div style="color:<%="red"%>" id="ttasp">天天ASP家园</div>
  2. <script>
  3. var objTemp=document.getElementById("ttasp")
  4.   objTemp.setAttribute("style","color:blue");

  5. </script>
复制代码



1.png


********************************
你要理解服务器原理,他是首先执行ASP,然后解析到HTML才会发送浏览器执行的。所有你VBS直接赋值即可,无需JS再传递到ASP去解释了。
你可能在逻辑上有点问题 你自己理顺下。
 楼主| 竹子 发表于 2022-10-27 17:05:17 | 显示全部楼层
xuanxiao 发表于 2022-10-27 10:07
服务端实现对字体颜色的改变很简单:

哦,多谢多谢!
那这个 tcolor 已经在屏幕上显示为 正确的 “blue"了,表明 fcolor 的值已经正确传递过来,但 tcolor="blue" 还为 false 是怎么回事呢?
xuanxiao 发表于 2022-10-27 20:53:25 | 显示全部楼层
当删除所有代码的时候他依然是蓝色
微信截图_20221027205122.png

2.png


从代码表现来看,只是浏览器给出的一个默认值而已,不是你赋值了蓝色。当无法解释color的时候,系统给出的默认结果。
 楼主| 竹子 发表于 2022-10-27 22:50:44 | 显示全部楼层
xuanxiao 发表于 2022-10-27 20:53
当删除所有代码的时候他依然是蓝色

不好意思麻烦您了!现在是这么个问题:(后附的代码段可直接运行)
aspVBsfromJs3.png
  1. <html>

  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">

  4. <title>VBs读Js中的变量fcolor测试</title>
  5. </head>

  6. <script language="JavaScript" type="text/JavaScript">

  7. fcolor="blue"                       

  8. </SCRIPT>

  9. Js 中的变量 fcolor 在 VBs 中直接引用显示为空:<% ="fcolor="&fcolor %><P></P>

  10. <%
  11. tcolor="<SCRIPT>document.write(fcolor)</SCRIPT>"        'tcolor 提取在 JS 中设定的颜色的过渡变量 fcolor
  12. %>

  13. 在 VBs 中提取的 Js 中的变量 tcolor 已显示为正确值:<% =tcolor %><P></P>                        <!--显示提取的变量-->

  14. 但进行验证却表示这个 tcolor≠"blue": ? tcolor="blue": <% =tcolor="blue" %><P></P>
复制代码

谢谢!


 楼主| 竹子 发表于 2022-10-28 10:11:51 | 显示全部楼层
xuanxiao 发表于 2022-10-28 09:52
你这个没有任何讨论的意义,我给你做了示范你认证研究下。JS 和ASP的执行顺序你懂了,这个自然就明白了。你 ...

好的。多谢耐心的指教!
 楼主| 竹子 发表于 2022-10-28 11:40:56 | 显示全部楼层
本帖最后由 竹子 于 2022-10-28 21:05 编辑
xuanxiao 发表于 2022-10-28 09:52
你这个没有任何讨论的意义,我给你做了示范你认证研究下。JS 和ASP的执行顺序你懂了,这个自然就明白了。你 ...


我对 tcolor 字符串进行分析,发现长度异常为 39个字符。进一步找到了 tcolor 显示正确但比较验证时却错误的原因,如下图:(所以正如你所说,无法通过这种方式在VBs中直接取出Js的变量值)
aspVBsfromJs4.png

下面是这个验证图的代码:

  1. <html>

  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">

  4. <title>VBs读Js中的变量fcolor测试</title>
  5. </head>

  6. <script language="JavaScript" type="text/JavaScript">

  7. fcolor="blue"                       

  8. </SCRIPT>

  9. Js 中的变量 fcolor 在 VBs 中直接引用显示为空:<% ="fcolor="&fcolor %><P></P>

  10. <%
  11. tcolor="<SCRIPT>document.write(fcolor)</SCRIPT>"        'tcolor 提取在 JS 中设定的颜色的过渡变量 fcolor
  12. %>

  13. 在 VBs 中提取的 Js 中的变量 tcolor 已显示为正确值:<% =tcolor %><P></P>                        <!--显示提取的变量-->

  14. 但进行验证却表示这个 tcolor≠"blue": ? tcolor="blue": <% =tcolor="blue" %><P></P>

  15. tcolor:<% =tcolor %><P></P>
  16. tcolor 长度:<% =len(tcolor) %><P></P>
  17. 用 right(tcolor,38) 取tcolor右边比其长度短1个字符的部分: <% =right(tcolor,38) %><P></P>

  18. 也就是说,tcolor 的实际字符串是:<img src="1.png">


  19. 所以,tcolor 其实是一 Js 语句:<img src="1.png"><P></P>
  20.         而非字符串:"blue" ,而 tcolor 显示正确的 "blue" 只是那条语句运行的结果,所以字符串比较 <img src="2.png"> 的结果是 False!
复制代码


代码中所用图片: 1.png
2.png
2.png
1.png
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表

在线客服

售前咨询
售后咨询
服务热线
023-58418553
微信公众号