You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:32:03