[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[技术讨论] 我用vbs做了个华氏度和摄氏度转换器

本帖最后由 LTSC1809 于 2023-6-3 17:03 编辑

没啥好说的,上代码,如果有好的建议请跟帖,另外如果有人能帮忙写成hta那就太好了(注意要求,我也会写hta,但是我要求选择从华氏度到摄氏度还是摄氏度到华氏度以及帮助做成三个按钮,然后输入框和运行结果的矿不要弹出,直接在页面上创建文本框和文字,因为我不会js,所以判断按钮按下然后运行指定的vbs脚本这个我不会,js一点也看不懂,但是hta有些地方只能js,很无奈):
  1. Function C_F(input)
  2. Dim output
  3. input=CDbl(input)
  4. output=32+input*1.8
  5. C_F=output
  6. End Function
  7. Function F_C(input)
  8. Dim output
  9. input=CDbl(input)
  10. output=(input-32)/1.8
  11. F_C=output
  12. End Function
  13. Dim inbox
  14. inbox=InputBox("输入CF来使用摄氏度到华氏度转换"&vbcrlf&"输入FC来使用华氏度到摄氏度转换"&vbcrlf&"输入“help”来查看帮助:","华氏度和摄氏度转换器")
  15. If inbox="CF" Then
  16. Dim incf,outcf
  17. incf=InputBox("输入摄氏度:","摄氏度到华氏度")
  18. outcf=C_F(incf)
  19. MsgBox incf&"℃="&outcf&"℉",vbokonly,"输出"
  20. ElseIf inbox="FC" Then
  21. Dim incf2,outcf2
  22. incf2=InputBox("输入华氏度:","华氏度到摄氏度")
  23. outcf2=F_C(incf2)
  24. MsgBox incf2&"℉="&outcf2&"℃"
  25. ElseIf inbox="help" Then
  26. MsgBox "华氏度和摄氏度换算公式:"&vbcrlf&"华氏度=32+摄氏度×1.8"&vbcrlf&"摄氏度=(华氏度-32)÷1.8"&vbclrf&"如果你觉得工具好用的话,去b站给LTSC1809点个赞吧",vbokonly,"help"
  27. Else
  28. MsgBox "无效输入",vbokonly,"Error"
  29. End If
复制代码

楼主,其实同一个hta程序的js和vbs变量互通,所以在点击按钮后使用js里的 var 变量名=值 的语句声明一个变量,然后后面用你会的vbs判断这个变量的值就可以了,我提供一下思路,这样可以解决button标签做的按钮只能使用你不会的js语句来做出反应的问题

TOP

自己回答自己的问题...主要是因为我已经有这个思路了,但是手懒不想写代码,于是只留个思路,等大佬写成hta或者有人用js重写我的代码

TOP

事实上作为一门用于网页的脚本语言 如果只是用来启动网页 vbs的功能还是够的
  1. //jscript
  2. window. onload=function(){
  3.     alert(1)
  4. }
复制代码
  1. 'vbscript
  2. sub window_onload()
  3. alert 1
  4. end sub
复制代码

TOP

hta甚至不需要按钮即可转换
话说你是不上网吗?🤔

TOP

本帖最后由 jyswjjgdwtdtj 于 2023-6-3 21:17 编辑

做一个
  1. <body>
  2. F:<input id=f /><BR/>
  3. C:<input id=c />
  4. <script>
  5. var f=document.getElementById("f")
  6. var c=document.getElementById("c")
  7. f.onkeydown=function(){
  8. if(isNaN(f.value*1)){return}
  9. c.value=(f.value-32)/1.8
  10. }
  11. c.onkeydown=function(){
  12. if(isNaN(c.value*1)){return}
  13. f.value=c.value*1.8+32
  14. }
  15. </script>
  16. </body>
复制代码

TOP

本帖最后由 jyswjjgdwtdtj 于 2023-6-3 21:17 编辑

vbs版本
  1. <body>
  2. F:<input id=f /><BR/>
  3. C:<input id=c />
  4. <script language=vbscript>
  5. 'set f=document.getElementById("f")
  6. 'set c=document.getElementById("c")
  7. sub f_onkeydown()
  8. if not isnumeric(f.value) then exit sub
  9. c.value=(f.value-32)/1.8
  10. end sub
  11. sub c_onkeydown()
  12. if not isnumeric(c.value) then exit sub
  13. f.value=c.value*1.8+32
  14. end sub
  15. </script>
  16. </body>
复制代码
最好不要用onpropertychange
最然很好用 但是很容易造成堆栈溢出(起码hta是这么报错的)
1

评分人数

    • LTSC1809: 好的思路!我根本没想到!技术 + 1

TOP

回复 5# jyswjjgdwtdtj 不需要按钮是什么意思?按钮是用来选择从哪种单位换到哪种单位的,你是要用下拉框吗
一个六年级小学生,请多指教

TOP

回复 6# jyswjjgdwtdtj 完全看不懂js代码,一点也看不懂,我只会vbs...
一个六年级小学生,请多指教

TOP

回复 7# jyswjjgdwtdtj 这个思路我真没想到,input原来还能这样用,输入一个就能显示另一个,不管输入哪个都行
一个六年级小学生,请多指教

TOP

回复 7# jyswjjgdwtdtj 为什么我用我的vbs版本输入639514华氏度,输出的结果是355282.777777778,但你做的这个hta换算器出来的结果是35528.2777777778
一个六年级小学生,请多指教

TOP

回复 11# LTSC1809 发现问题了,hta版的*1.8被错误的写成了*18
一个六年级小学生,请多指教

TOP

回复 6# jyswjjgdwtdtj

你这个有问题啊,我解决1.8错写成18以后发现输入639514出来的是35510.555555555555,正确答案是355282.777777778
一个六年级小学生,请多指教

TOP

回复 13# LTSC1809


    嗯? 是你写错了吧

还有这分加的我受宠若惊
照你这样加法 技术分得通货膨胀

TOP

本帖最后由 jyswjjgdwtdtj 于 2023-6-3 21:16 编辑

对了 hta里最好不要用vbs 硬要用(比如regexp很香 typename很香 foreach很香) 事件最好这么些
  1. sub a
  2. msgbox b
  3. end sub
  4. window.onload=getref("a")
复制代码
主要吧 靠谱 但是绝对没有js方便
js不难 可以学学
难的是那些面向对象的奇诡方法 比如集大成者jquery

TOP

返回列表