使用循环和输入文本框创建对象属性名称

Create object property names using loop and input textboxes

本文关键字:创建对象 属性 文本 循环 输入      更新时间:2023-09-26

我正在重构一些代码,其中我抓取输入到文本框中的值并使用所述值进行计算。问题在于,与其多次使用 document.getElementByID,不如循环遍历页面上的每个文本框,并将每个值分配给此对象,我将传递给我的计算函数。我还想通过查看输入文本框 ID 并使用对象属性名称的 ID 字符串来设置此对象的属性名称。

请参阅下面的代码:

$(document).ready(function() {
    var calcObj = new Object();
    $("input[id^='txt']").each(function(i, val) {
        calcObj[i] = this.value;
    });

    $.each(calcObj, function(i, val) {
        //        alert(val);
    });
}); 

如您所见,当文档准备就绪时,对象已创建。有一个jquery .each循环来遍历每个id包含txt的输入。我正在将 this.value 分配给索引为 i 的对象。

所以我想介绍一下如何命名这个对象的属性并赋值,这样我就可以在代码中的其他地方引用对象属性名称,在那里我把这个对象传递给另一个函数。

谢谢。

据我了解,你想要:

calcObj[this.id] = this.value;

我不完全明白你的要求,因为看起来你已经在做我认为你在问的事情。

现在,您正在执行以下操作:

calcObj[i] = this.value;

这与分配它没有什么不同:

calcObj['foo'] = this.value;
// and later we can access that via
alert( calcObj.foo );  // or calcObj['foo']

您也可以对此保持动态,例如:

calcObj[this.id] = this.value;