我想问一下在香草javascript中这相当于什么?
var formData = {
'name' : $('input[name=name]').val(),
'email' : $('input[name=email]').val(),
'phoneNumber' : $('input[name=phoneNumber]').val()
};
这段代码是针对JQuery版本的,但是如果我想编写类似的东西来在一个变量中声明所有字段,或者在普通js中是不可能的?
答案 0 :(得分:1)
仅供参考:如果浏览器中有document.querySelector()
,这就是jQuery内部所做的事情。此处(@linke 169):https://github.com/jquery/jquery/blob/master/src/selector-native.js
var formData = {
'name' : document.querySelector('input[name=name]').value,
'email' : document.querySelector('input[name=email]').value,
'phoneNumber' : document.querySelector('input[name=phoneNumber]').value
};
答案 1 :(得分:0)
为减少重复,您可以考虑reduce
排列一组['name', 'email', 'phoneNumber']
:
const formData = ['name', 'email', 'phoneNumber'].reduce(
(a, name) => {
a[name] = document.querySelector(`input[name="${name}"]`).value;
return a;
},
{}
);
答案 2 :(得分:0)
如果控件在表单中,则可以将其作为表单的命名属性访问,并省去 formData 变量,例如
var form = document.forms[0], // Assuming first form in document
formData = {
name : form.personName.value,
email : form.email.value,
phoneNumber: form.phoneNumber.value
};
这可能会更高效,因为它涉及属性访问而不是一系列函数调用。
请注意,表单具有标准的name属性,因此任何表单控件都不应与此冲突,因此我已将 name 重命名为 personName 。