如何将变量传递给字段id javascript

时间:2014-01-31 17:24:54

标签: javascript

我对这些东西很陌生 - 我有一些代码可行,但不是很优雅:

function cost(){
var runningcost=0
  if (document.getElementById('field_280_0').checked==true)
    {
    runningcost=100;
    }
  else 
    {
      if (document.getElementById('field_281_0').checked==true)
      {
      runningcost=runningcost+12
      }
      if (document.getElementById('field_282_0').checked==true)
      {
      runningcost=runningcost+12
      }if (document.getElementById('field_283_0').checked==true)
      {
      runningcost=runningcost+12
      }if (document.getElementById('field_284_0').checked==true)
      {
      runningcost=runningcost+12
      }if (document.getElementById('field_285_0').checked==true)
      {
      runningcost=runningcost+12
      }if (document.getElementById('field_286_0').checked==true)
      {
      runningcost=runningcost+12
      }if (document.getElementById('field_287_0').checked==true)
      {
      runningcost=runningcost+12
      }if (document.getElementById('field_288_0').checked==true)
      {
      runningcost=runningcost+12
      }if (document.getElementById('field_289_0').checked==true)
      {
      runningcost=runningcost+12
      }if (document.getElementById('field_290_0').checked==true)
      {
      runningcost=runningcost+12
      }
    }if (document.getElementById('field_292_0').checked==true)
    {
    runningcost=runningcost+55
    }
document.getElementById('[[Total cost#id]]').value=runningcost;
}

我正在尝试使用for循环去除所有if行:

for (var i=281;i<292;i++)
    {
        var field = i.toString();
                if (document.getElementById('field_'+ field +'_0').checked==true)
            {
            runningcost=runningcost+12
            }
    }

我已尝试过很多关于该主题的变体,但我总是被getElementById视为null。

我做错了什么?任何指针都会很棒。

2 个答案:

答案 0 :(得分:0)

尝试删除var field = i.toString();

我尝试了一个快速的fiddle,看看它是否有效,而且确实如此。

HTML:

<div id="field_285_0"></div>

使用Javascript:

for (var i=281;i<292;i++)
{
    if(document.getElementById('field_'+ i +'_0')) {
        $('body').append('exsists: '+ i );   //<-- Just added this to check my if statement
    };
}

答案 1 :(得分:0)

我认为问题出在

for(var i = 281; i <292; i ++)

它现在可以用作

for(var i = 280; i <291; i ++)

我认为我忘记了在每次传球之前我被添加到了(不知道在这里调用它的技术方法),所以它需要在所需的字段数下面开始1,如果这是有道理的。< / p>

它似乎可以使用或不使用var field = i.toString(); - 如果不需要,我会删除它以保持代码清洁。

感谢大家的评论。