Javascript:以编程方式构造html元素ID

Javascript:以编程方式构造html元素ID,javascript,html,Javascript,Html,我需要访问页面中许多字段的值,并对它们执行相同的计算。我想这样做,允许我动态访问不同的表单元素,但我无法让它工作: function numInFamily(famID) { var numAdults; var numChildren; var adultFieldID; var childFieldID; adultFieldID = 'numAdultsFam' + toString(famID); childFieldID = 'numK

我需要访问页面中许多字段的值,并对它们执行相同的计算。我想这样做,允许我动态访问不同的表单元素,但我无法让它工作:

function numInFamily(famID) {
    var numAdults;
    var numChildren;
    var adultFieldID;
    var childFieldID;

    adultFieldID = 'numAdultsFam' + toString(famID);
    childFieldID = 'numKidsFam' + toString(famID);

    numAdults = parseInt(document.getElementById(adultFieldID).value,10);
    numChildren = parseInt(document.getElementById(childFieldID).value,10);

    return numAdults + numChildren;
}

有人能解释一下我如何动态引用这些元素吗?

没有内置的
toString
全局函数。但是您不需要这样的函数,因为
+
操作符会自动进行字符串转换。只需将前两项作业替换为以下内容:

adultFieldID = 'numAdultsFam' + famID;
childFieldID = 'numKidsFam' + famID;

此外,您还可以像这样重写函数:

var numInFamily = (function () {     
    function getVal ( id ) {
        return parseInt( document.getElementById( id ).value, 10 );
    }

    return function ( famID ) {
        return getVal( 'numAdultsFam' + famID ) + getVal( 'numKidsFam' + famID );
    };    
}());

这将删除代码重复。

您发布的答案的5个不同版本…:)@trex005呵呵,我一直在改进,直到我满意为止。@ŠimeVidas-谢谢!问题确实出在toString()上。仅仅改变这一点就解决了这个问题。我也很感谢关于简化代码的进一步指导。