2012-05-14 2 views
0

Мне нужно получить доступ к значениям числа полей на моей странице и выполнить те же вычисления на них. Я хотел бы сделать что-то подобное, что позволяет мне динамически получать доступ к различным элементам формы, но я не могу заставить его работать:Javascript: конструировать идентификаторы элементов html программно

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

Может кто-нибудь объяснить, как я могу динамически ссылаться на эти элементы?

ответ

1

Нет встроенной 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); 
    };  
}()); 

Это удалит повторение кода.

+0

любил 5 разных версий вашего ответа, который вы отправили ... :) – trex005

+0

@ trex005 Хе-хе, я продолжаю улучшать его, пока не удовлетворюсь. –

+0

@ ŠimeVidas- спасибо! Проблема была действительно с toString(). Только изменение этого решило проблему. Я также ценю дальнейшие рекомендации по рационализации кода. – burgerB

Смежные вопросы