javascript - 用js获取空文本框的值 为什么得到的是空字符串""而不是undefined?
巴扎黑
巴扎黑 2017-04-11 13:29:40
[JavaScript讨论组]

在判断文本框是否为空的时候往往用到
用""也可以判断,但是undefined就不行,后来发现获取好的空文本框的值是一个空字符串而不是undefined;
所以想请教一下这是为什么?

巴扎黑
巴扎黑

全部回复(4)
巴扎黑

input,textarea默认都是字符串。没有内容就是空字符串。
可以理解为规范就是这样定的。

大家讲道理

在 JS 中,undefined 表示一个未声明的变量,或已声明但没有赋值的变量,或一个并不存在的对象属性,

而 input 或 textarea 的 value 值是定义且为空的,看下例子:

var input = document.createElement('input');
input.value; //""

在 chrome 下调试,可以看到 value 的值确实为空,

除了 title,好多值都是空的,就像一楼说的那样,可能这就是规范吧。

PHP中文网

这个问题的原因是由于JavaScript实作的DOM介面的方法设计造成的。

一般取DOM元素值用的方法getElementById方法,它的回传设计是,如果DOM元素存在时,就回传值,如果该DOM不存在时,就回传null,在JavaScript中undefinednull是不同的东西,所以这里应该是null与有没有回传值的两种情况。与undefined没关系。

所以当DOM元素存在时,必定有回传值,对input或textarea等表单元素来说,回传的是value值,因为你没写它就是个空子串,当然是回传空字串。

DOM元素有value值是使用value值,那么,如果没有value属性时,预设值又是为何?一定是空字串吗?答案是有三种情况,最常见的是空字串,第二种是像checkbox与radio的选项时,没给value属性会回传on字串,最后一种也是只有一个有的特殊情况,是filename文档名称,它只有在<input type="file">才会用到。这些标准是由W3C所制定的,JavaScript只是遵守标准实作而已。标准可以参考这里:https://www.w3.org/TR/2012/WD...

另一个题外话是,实际上要取DOM元素的值在JavaScript中内建至少有6种方法可以取,但回传值的设计上与上面说的getElementById方法一样。参考: http://stackoverflow.com/ques...与https://developer.mozilla.org...

怪我咯

value="";其中的""也算值啊,只不过是空字符串,但它确实是个值,undefined都没有值,连值都没有。它才是真正的没有值

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号