在判断文本框是否为空的时候往往用到
用""也可以判断,但是undefined就不行,后来发现获取好的空文本框的值是一个空字符串而不是undefined;
所以想请教一下这是为什么?
在判断文本框是否为空的时候往往用到
用""也可以判断,但是undefined就不行,后来发现获取好的空文本框的值是一个空字符串而不是undefined;
所以想请教一下这是为什么?
在 JS 中,undefined 表示一个未声明的变量,或已声明但没有赋值的变量,或一个并不存在的对象属性,
而 input 或 textarea 的 value 值是定义且为空的,看下例子:
var input = document.createElement('input');
input.value; //""
在 chrome 下调试,可以看到 value 的值确实为空,
除了 title,好多值都是空的,就像一楼说的那样,可能这就是规范吧。
这个问题的原因是由于JavaScript实作的DOM介面的方法设计造成的。
一般取DOM元素值用的方法getElementById
方法,它的回传设计是,如果DOM元素存在时,就回传值,如果该DOM不存在时,就回传null
,在JavaScript中undefined
与null
是不同的东西,所以这里应该是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...
13 回答13.1k 阅读
7 回答2.3k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.5k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
input,textarea默认都是字符串。没有内容就是空字符串。
可以理解为规范就是这样定的。