使用函数使变量分配 HTML ID



我可以像这样一一制作变量:

var bookName = document.getElementById('bookName').value,
author = document.getElementById('author').value,
translator = document.getElementById('translator').value,
pageCount = document.getElementById('pageCount').value,
publisher = document.getElementById('publisher').value,
isbn = document.getElementById('isbn').value,
printingYear = document.getElementById('printingYear').value;

但是它很难写,而且不符合 DRY 规则。所以我将代码更改为:

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);

但我不明白这是真的方法还是有效?如何检查它是否属实?

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

如果我理解正确,那么您希望从所有<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);
<input type="text" id="author" value="Dahl">
<input type="text" id="isbn" value="1234">

.

最新更新