我想要一个HTML元素名称字符串的关联数组对象到隐藏的输入元素。像这样......
var fieldNames2inputElements = {
'FirstName' : document.getElementsByName('FirstName')[0],
'LastName' : document.getElementsByName('LastName')[0],
...
};
我已经对自己摇头了,知道必须有更干的方式来做这件事。有什么建议?如何使用关联数组的字符串键作为该键值的某个参数?
BTW:我无法控制具有此name属性的隐藏输入元素与id或其他选择方式。
答案 0 :(得分:5)
您可以定义一个辅助函数,该函数接受目标元素的名称并返回一个对象:
function getByName(names) {
return names.reduce(function(ret, name) {
ret[name] = document.querySelector('input[name="'+ name +'"]');
return ret;
}, {});
}
var fieldNames2inputElements = getByName(['FirstName', 'lastName', '...']);
答案 1 :(得分:1)
我会写(使用es6箭头功能):
var fieldNames2inputElements = ['FirstName', 'LastName']
.reduce((o, name) => (o[name] = document.getElementsByName(name)[0], o), {});
答案 2 :(得分:0)
您可以使用for
循环document.querySelectorAll()
和选择器"input[name$=Name][type=hidden]"
作为参数
for (var i = 0, elems = document.querySelectorAll("input[name$=Name][type=hidden]")
, fieldNames2inputElements = {}
; i < elems.length; i++) {
fieldNames2inputElements[elems[i].name] = elems[i]
};
console.log(fieldNames2inputElements)
<input name="FirstName" type="hidden" />
<input name="LastName" type="hidden" />