javascript - 用 JS .value 替换 JQuery .val()

标签 javascript jquery

我正在检查提交表单上的一些遗留代码,并用 vanilla JS 替换 JQuery。

现在,我有这个函数,它使用 .val() (JQuery) 来获取未定义输入的值:

myFunction: function(){
          var subscription = $('input[name="subscription_id"]').val();
          // Do something with subscription
}

当我在浏览器中运行代码时,没有遇到任何问题 - 该代码仅在将订阅传递到输入时才起作用 - 如果不存在,我们只会得到一个未定义的值。 $() 和 .val() 控制台 JQuery 组合返回的值记录为“未定义”。

当我用 vanilla JS 替换 JQuery 时,如下所示:

myFunction: function(){
          var subscription = document.querySelector('input[name="subscription_id"]').value;
          // Do something with subscription
}

然后尝试运行我的表单,我在控制台中收到以下错误:

Uncaught TypeError: Cannot read property 'value' of null

为什么会发生这种情况?有解决方法吗?任何帮助表示赞赏。提前致谢。

最佳答案

发生这种情况是因为

document.querySelector('input[name="subscription_id"]')

不存在。对于vanilla js,您需要先检查它是否存在,如果存在则获取值。 jQuery 对此有一个无声的失败。

var element = document.querySelector('input[name="subscription_id"]');

// If it exists, return its value, or null
var subscription = element ? element.value : null;

关于javascript - 用 JS .value 替换 JQuery .val(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58590860/

相关文章:

javascript - 如何让 jquery css 容器弹出让用户知道数据已成功输入?

javascript - 为 div 元素分配唯一的 id

javascript - 显示 JS 无法在幻灯片中滚动

c# - IE7 和 IE8 兼容的 JQuery 代码行是什么?

javascript - ajax调用中的jquery退出函数

jQuery - 只需绑定(bind)一个事件一次

jquery 阅读更多和更少切换

javascript - Nuxt.js:未定义 ReferenceError baseURL

javascript - 如何不在地址栏中显示输入文本

javascript - 用于自动滚动的偏移 anchor