在Javascript中使用value函数中的数组键?

时间:2016-04-10 00:28:50

标签: javascript arrays dom

我想要一个HTML元素名称字符串的关联数组对象到隐藏的输入元素。像这样......

var fieldNames2inputElements = {
    'FirstName' : document.getElementsByName('FirstName')[0],
    'LastName'  : document.getElementsByName('LastName')[0],
    ...
};

我已经对自己摇头了,知道必须有更干的方式来做这件事。有什么建议?如何使用关联数组的字符串键作为该键值的某个参数?

BTW:我无法控制具有此name属性的隐藏输入元素与id或其他选择方式。

3 个答案:

答案 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" />