在javascript中重复功能

时间:2014-07-09 15:01:54

标签: javascript function

请你告诉我如何从这4个功能中做出1.因为他们都做了一件事,只有一个参数一直在改变。 此外,我需要获取每次函数运行时的值并将其放入一个新变量中,以便我可以在计算之后。

function getValue(age)
{
    for (var i = 0; i < document.getElementsByName('age').length; i++)
    {
        if (document.getElementsByName('age')[i].checked)
        {
            return document.getElementsByName('age')[i].value;
        }
    }
}


function getBmiValue()
{
    for (var i = 0; i < document.getElementsByName('bmi').length; i++)
    {
        if (document.getElementsByName('bmi')[i].checked)
        {
            return document.getElementsByName('bmi')[i].value;
        }
    }
}    

function getFamValue()
{
 for (var i = 0; i < document.getElementsByName('fam').length; i++)
 {
    if (document.getElementsByName('fam')[i].checked)
        {
            return document.getElementsByName('fam')[i].value;
        }
    }   
 }

function getDietValue()
{
 for (var i = 0; i < document.getElementsByName('diet').length; i++)
  {
      if (document.getElementsByName('diet')[i].checked)
       {
            return document.getElementsByName('diet')[i].value;
       }
    }     
}

3 个答案:

答案 0 :(得分:2)

function getValueByElementName(element_name)
{
 for (var i = 0; i < document.getElementsByName(element_name).length; i++)
 {
    if (document.getElementsByName(element_name)[i].checked)
        {
            return document.getElementsByName(element_name)[i].value;
        }
    }   
 }

或稍微优化:

function getValueByElementName(element_name)
{
   var elements = document.getElementsByName(element_name);

   for (var i = 0; i < elements.length; i++)
   {
      if (elements[i].checked)
            return elements[i].value;
    }   
 }

答案 1 :(得分:1)

function getValue(tagname)
{
    for (var i = 0; i < document.getElementsByName(tagname).length; i++)
    {
        if (document.getElementsByName(tagname)[i].checked)
        {
            return document.getElementsByName(tagname)[i].value;
        }
    }
}

将您的元素名称作为变量传递给此函数并调用它。

答案 2 :(得分:0)

以下是您可以执行的操作示例:

function getValue(key) {

// get this once, not on each loop iteration  
var elem = document.getElementsByName(key);

  // cache the length too, so not to calculate it on each loop iteration
  for (var i = 0, len = elem.length; i < len; i++) {

    if (elem[i].checked) {
      return elem[i].value; 
      // this will exit the function when it finds the FIRST one. 
      // Is that what you want?
    }
  }
}

// you can call above function like this:
getValue('age');
getValue('bmi');
getValue('fam');
getValue('diet');