我可以像这样一个一个地创建变量:
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属性创建变量,并将其分配给每个变量的值。
答案 0 :(得分:1)
如果我理解正确,那么您希望从所有<input>
元素中收集数据。如果是这样,那么你需要这样称呼它:
variableMaker('input'); // use quotes!
即便如此,你的功能还没有返回任何东西,只是结束了。
您还可以更好地为返回集合创建自己的对象,而不是将值添加到现有对象。
这是一个有效的解决方案:
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;