在调试一个带下拉列表的表单程序时,发现一个问题,这个表单是用dialog来显示的,当第一次打开dialog时,select不能够显示当前选项,而再次打开时能够正确显示了,而且这个问题能够重复。
select 的选项是用ajax加载的,只加载一遍;表单的数据也是用ajax加载,每次打开dialog时都重新加载。通过在js中增加日志输出,发现第一次打开 dialog时,表单数据先加载完成,而select选项后加载完成。这样会导致一个问题,将表单数据中的对应select的值设置到select时,肯 定是无法保存的,因此又增加了一个全局变量来保存表单数据;当加载select数据的ajax调用返回后,取select的当前值,如果没有当前值,则使 用已保存的全局变量中的值,然后重新构造select的option选项。当第一次打开表单对话框时,显示select当前选项为空,js日志输出当前值 为null,实际上应该是有值的。而后来再打开表单对话框时,显示select为正确的值。
仔细检查了代码之后,发现select默认有个选项,其值为null,代码为:<select><option value="null"></option></select>。这就可以解释上面的现象了,js日志输出的null是 字符串null,而不是js那个null对象。将null去掉之后程序就正常了:<select><option value=""></option></select>。
类似的问题也可能发生的Java,因为有时候字 符串String为null,有时候又可能为"null",而输出的结果都一样,很难分辨,容易造成一些潜在的问题。这可以说是Java在设计时的一个问 题,而C/C++似乎就好一些,字符串0指针打印的值为(null),加了小括号这样就能通过输出清楚地分辨出来。
- 源文【JS编程要当心null和"null",尤其是最后一个】最新版,请访问:
http://www.vktone.com/articles/be_careful_of_null_string.html
相关推荐
玩这些新奇玩具要当心
我们有两天的时间使用面向对象的编程体系结构来计划和构建JavaScript游戏。 在一个配对中,我们在代码学院训练营的第5周完成了该项目,以练习JavaScript,OOP,类和画布的动手操作。 我们确实竭尽全力,为构建交互式...
给宝宝添加辅食一定要当心四“过”.pdf
高招季来临:诈骗招数套路多,这些招数要当心!.docx
元宇宙+农业:当心概念炒作,核心是产业融合.docx元宇宙+农业:当心概念炒作,核心是产业融合.docx
手镯赝品多是玻璃制品购买需要当心.ppt
当心购房踩.doc
当心疾病“声东击西”
当心这些“胃”伤
春节购物当心过期商品.doc
大班平安教案当心用电.docx
腿脚发凉当心下肢动脉闭塞
车内开空调,当心!.doc
NumPyro 使用由提供支持的NumPy进行概率编程,可将自动毕业和JIT编译到GPU / TPU / CPU。 |什么是NumPyro? NumPyro是一个小型的概率编程库,为提供了NumPy后端。 我们依靠进行自动区分,并将JIT编译到GPU / CPU。 ...
当心环境中的电磁波.pdf
宝宝关节活动减少,当心关节炎
通达信指标公式源码 当心红顶.doc
当心喝酒喝出股骨头坏死.pdf
当心被无线路由器“出卖”.pdf