你真的完全了解input输入框吗

326 阅读2分钟

前言

昨天朋友提了这样一个问题:他的代码中的输入框里的数值在谷歌浏览器显示正常,在mac上的浏览器上显示不出来,但是控制台能够打印出输入框的值。

猜测

因为它在普通的浏览器上显示是正常的,所以我给出了以下两个猜测:

1. 样式的兼容性问题,样式原因把数值给遮盖掉了

2. 代码在某一时机,数值丢了,所以不显示(应该是小概率)

验证

打开控制台对比查看输入框是否有值,结果神奇的一幕发生了:在页面上看到输入框有值,但是控制台上得dom节点也没有显示出值。

以elementUI为例:

image.png

image.png

我们可以看到此时输入框里是没有值的,所以节点中没有值,我们也不奇怪,我们给输入框添加123时结果如下:

image.png

image.png

奇怪了,我明明给输入框添加了值,但是节点中依旧是没有值显示。

为什么会这样

答案:标签类型导致节点值在控制台的展示不同。

单标签和双标签:

我们常见的双标签有:div p span

我们看下在控制台的展示效果:

image.png

image.png

单标签有以下标签:

<br>
 <hr>
 <area>
<base>
 <img>
<input>
 <link>
<meta>
<basefont>
<param>
 <col>
<frame>
<embed>
<keygen>
<source>

但是这些单标签部分是不包含value的

单标签只有input包含value,双标签一般取值是根据innertext进行取值,而我们的input只能通过input进行取值

控制台查看input标签的值方法

image.png

image.png

这样是不是就看到了,我们在控制台的属性栏就可以查看对应的节点值。

如果是其他的标签,我们也可以通过innertext查看其中的值:

image.png

image.png

好了,下次遇见了这样的问题,你就不迷惑了吧