为何x.value与y返回值不一致?预期相同却结果不同
问题原因分析与解决办法
这是个很典型的变量赋值时机问题,我来帮你拆解清楚:
核心差异点
- 变量
x保存的是DOM元素的引用:当你写x = $("input[name=startDate]")[0]时,你只是把输入框这个DOM对象存进了x里。之后每次访问x.value,都会实时去读取这个输入框当前的实际值——也就是你选择日期后的最新值。 - 变量
y保存的是初始值的副本:当页面加载时,输入框的value是空字符串,你把这个空字符串直接赋值给了y。y只是一个普通的字符串变量,它不会和输入框的实时值绑定,所以之后不管输入框的值怎么变,y都会一直是最初的空字符串。
修正后的代码示例
如果想让y也能获取到实时的日期值,你可以在getDate函数里重新读取:
// 先修正语法错误(原代码少了闭合括号) var x = $("input[name=startDate]")[0]; function getDate() { var y = x.value; // 每次调用函数时,实时读取当前值 console.log(x.value); // 输出选择的日期,比如2018-05-14 console.log(y); // 现在也会输出相同的日期了 }
另外补充:你原来的代码存在语法错误,$("input[name=startDate]"[0] 应该改成 $("input[name=startDate]")[0],注意闭合括号的位置。
内容的提问来源于stack exchange,提问作者ngchongpeng
相关产品推荐
相关产品推荐

