使用函数为变量分配HTML ID

时间:2017-08-09 10:59:15

标签: javascript html dom

我可以像这样一个一个地创建变量:

function variableMaker(argument) {
  var tags = document.getElementsByTagName(argument);
  for (var i = 0; i < tags.length; i++) {
    var tags[i].name = tags[i].value;
  }
}

variableMaker(input);

但它写得太难了,它不符合DRY规则。所以我把代码更改为:

from selenium import webdriver as wd

br = wd.Chrome()
br.get(URL)  # use url mentioned in question
s = br.find_element_by_id('bodyContent')  #search results div
print '\n'.join(s.text.split('\n')[3:22])

但我无法理解这是真的方式还是有效?我如何检查它是否真实?

在这段代码中,我试图让计算机找到所有输入标签并使用其name属性创建变量,并将其分配给每个变量的值。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,那么您希望从所有<input>元素中收集数据。如果是这样,那么你需要这样称呼它:

variableMaker('input');   // use quotes!

即便如此,你的功能还没有返回任何东西,只是结束了。

您还可以更好地为返回集合创建自己的对象,而不是将值添加到现有对象。

这是一个有效的解决方案:

&#13;
&#13;
function variableMaker(tagName) {
  var elements = document.getElementsByTagName(tagName);
  var items = {};
  for (var i = 0; i < elements.length; i++) {
    var elem = elements[i];
    items[elem.id] = elem.value; // Use id as key, each points to the corresponding value.
  }
  return items;
}

var values = variableMaker('input');

console.log(values);        // show the entire return object

console.log(values.author); // access individual items from the return object
console.log(values.isbn);
&#13;
<input type="text" id="author" value="Dahl">
<input type="text" id="isbn" value="1234">
&#13;
&#13;
&#13;