博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在js中获取页面元素的属性值时,弱类型导致的诡异事件踩坑记录,
阅读量:6036 次
发布时间:2019-06-20

本文共 1070 字,大约阅读时间需要 3 分钟。

前几天写一个js的时候遇到一个非常诡异的事情,这个问题是这样的,我要获取一个页面的DOM元素的val值,判断这个值是否比某个变量大,这个需求原先数字最大也就是10,现在要改了,可能会更多,这个时候我发现比较大小的判断就出了问题:

代码粘出来:

1 // js弱类型导致的诡异现象,11 > 9  false 2   function downtest(id){
// 现象是当val取到的元素val值是11的时候,11>9结果是false 3 // 当前点击下一题的是第几题, 4 var val=$("#"+id).attr("val"); 5 var valint = parseInt(val);// 如果不把这个变量手动转成数字,当val大于等于10的时候(小于10的时候当做是数字)js就会把它作为一个字符串处理,弱类型语言导致的 6 // 如果当前这个题号比已答题数大的话,就让已答数量变成当前题号 7 console.log('valint: '+valint+'num: '+num+(valint>num)); 8 console.log(valint+num); 9 if (valint>num) {10 document.getElementById("numbers").innerText=valint;11 num=valint;12 }else{13 document.getElementById("numbers").innerText=num;14 }15 var div = $("#"+id);16 var n = div.next(); //后一个兄弟17 div.hide();18 n.show();19 a++ 20 }

当获取到的这个值为11的时候(第四行),被比较的变量是9,按理说11>9的结果应该是true吧,但是打印出来的log显示是false.....我后来查了查资料,自己总结一下,发现如果当获取到的属性值超过或等于10,js就会把这个变量视为字符串处理,而不是在比较时作为数字,

解决的办法就是手动转换为数字(第五行),这个时候再打印出来就是正确的数字对比结果了,比较小的一个小坑吧,记录一下

 

转载于:https://www.cnblogs.com/zizaiwuyou/p/10538157.html

你可能感兴趣的文章
java 运算符,流程控制语句,键盘录入
查看>>
老男孩教育-linux面试题-基础题1
查看>>
关于lync安装问题
查看>>
九、搭建织梦cms网站
查看>>
如何查看Oracle官方文档
查看>>
项目管理英语
查看>>
Sym System Recovery 2013 ( 備份 操作 )
查看>>
学习jquery mobile
查看>>
如果你写PHP, 请多注意自己是否有良好的习惯
查看>>
罗森伯格成功部署印度某著名港口光纤基础设施
查看>>
How to Setup Apache encrypt SSL on Ubuntu 18.04
查看>>
集线器、路由器、交换机、第三层交换技术
查看>>
【Java集合源码剖析】ArrayList源码剖析
查看>>
我的友情链接
查看>>
关于jfreechart中文标题乱码的解决 /usr/share/fonts/truetype/ /usr/share/fonts/truetype/
查看>>
网页的学习语言将仿佛使你生活更动人
查看>>
C++静态变量内存分配,编译阶段,解密
查看>>
Gartner:XenServer你是领导者!
查看>>
我的友情链接
查看>>
专业程序员必知必会的技巧:驯服复杂代码
查看>>