以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  getElementById取不到值,请教啥问题?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=145820)

--  作者:苍风霁月
--  发布时间:2020/2/8 14:05:00
--  getElementById取不到值,请教啥问题?
移动端代码:
Dim e As RequestEventArgs = args(0)
Dim wb As WeUI = Args(1)
wb.AddPageTitle("","pageheader","买入信息","")
wb.AddTopTips("","toptip2","")
wb.AddForm("","buyinfo","buysave.html").Attribute=""
If e.GetValues.ContainsKey("m") Then
    Dim dr As DataRow= DataTables("资金").Find("用户=\'" & args(2) & "\'")   
    With wb.AddInputGroup("buyinfo","ipg1","准确记录买入数据")
        .AddHidenValue("用户",args(2))
        .AddHidenValue("余额",dr("余额"))  \'经验证余额是>0的;
        With .AddInput("名称","名称","text")
            .Value = e.GetValues("m")
            .Readonly=True
        End With
       
        With .AddInput("价格","价格","number")
            .Required=True
            .Step = "0.01"
        End With
        With .AddInput("数量","数量","number")
            .Required=True
        End With
    End With
Else
    wb.AddTopTips("","toptip1","数据有误!").msec = 2000
End If
With wb.AddButtonGroup("buyinfo","btg1",False)
    .Add("btn1", "保存", "submit")
End With
wb.AppendHTML("<script src=\'./lib/ajaxform.js\'></script>") \'引入脚本文件
e.WriteString(wb.Build)

Js文件代码:
function Validit(){
alert(1);
alert(document.getElementById("价格").value);
   var v1 = document.getElementById("余额").value;
   var v2 = document.getElementById("价格").value;
   var v3 = document.getElementById("数量").value;
   if (v1-v2*V3>0){return true}
   showTopTips("toptip2","余额不足!",2500);
   return false;
}


执行结果是:JS执行了,弹出了1,后面的弹窗显示价格信息及验证完全没的执行,请教原因?

--  作者:有点蓝
--  发布时间:2020/2/8 14:36:00
--  
按F12打开浏览器的开发者工具,看看价格这些标签的名称和id都是什么?到js里设置断点调试看看
--  作者:苍风霁月
--  发布时间:2020/2/8 15:46:00
--  
使用开发工具看了,名称及ID均是对的,但在JS打断点后,(断点打在var v1 = document.getElementById("余额").value这里),直接跳过了
在调试里,能看到隐藏控件的value,但js断点没停下来。
在V1,V2处都设置断点,没停,alert(1)执行,alert(2)没执行。
Js文件代码:
function Validit(){
alert(1);
   var v1 = document.getElementById("余额").value;
   var v2 = document.getElementById("价格").value;
   var v3 = document.getElementById("数量").value;
alert(2);
   if (v1-v2*V3>0){return true}
   showTopTips("toptip2","余额不足!",2500);
   return false;
}

[此贴子已经被作者于2020/2/8 16:04:17编辑过]

--  作者:有点蓝
--  发布时间:2020/2/8 16:07:00
--  
我测试上面的代码没有问题。上传实例测试

可能是js文件编码问题。Js文件是不是使用记事本编辑的?使用另外的文本编辑器重新建一个js文件试试,比如vscode、editplus等等

--  作者:苍风霁月
--  发布时间:2020/2/8 16:15:00
--  
哦,还真是js文件编码问题,使用editplus保存的JS,解决问题,谢谢!