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()上。仅仅改变这一点就解决了这个问题。我也很感谢关于简化代码的进一步指导。