var intCount = document.TestFrm.count.value; // 获取总数
var dBasicScore = 0.0; // 分值
var intTemp = 1;
var dScore = 0.0; // 总分
for (intTemp = 1; intTemp <= intCount; intTemp++)
{
dBaiscScore = parseFloat(document.TestFrm.basicscore[intTemp].value); // 获取分值
if (document.TestFrm.seloption[intTemp].value == "1") // 是1则加分
{
dScore += dBasicScore;
}
}
document.TestFrm.TotalScore.value = dScore;谢谢~~~

解决方案 »

  1.   

    如果没猜错的话,document.TestFrm.basicscore是一个具有相同name的元素集合,访问这个集合是从0索引开始的,改为for(intTemp = 0;intTemp < intCount; intTmp ++)
      

  2.   

    恩,basicscore是有这个问题
    但是
    我在html里seloption不是表示成一个name的
    因为都是选择题,不能把所有radio都使用一个name,这样会使所有的选择题都合在一起了
    必须每道题的选项都使用不同的name
    我想这样表达出来:
    每道题的选项:
    <input type="radio" name="seloption[n]" value="1">A
    <input type="radio" name="seloption[n]" value="2">B
    <input type="radio" name="seloption[n]" value="3">C
    <input type="radio" name="seloption[n]" value="4">D
    然后在js里判断每一题的选项,选value为1的都加分
    if (document.TestFrm.seloption[n].value == "1") ... 
    这样是一道题的判断,有n题
    有么有什么解决方法?
      

  3.   

    count = document.all.tags("input")
    for(i=0;i<count.length;i++)
    {
    if(count[i].value == 1)
       {
         dScore += dBasicScore;
       }
    }
      

  4.   

    还是不明白你的意思,他是input又不是 checkbox 或radio怎么选啊
    如果你是指,只要页里面input的值填的是1就加分的话可以这样
    function getf(){
       var dBasicScore = 0.0; // 分值 
       var dScore = 0.0; // 总分
       var inputs=document.getElementsByTagName("input");
       for(var i=0;i<inputs.length;i++){
             if(Number(inputs[i].value)==1){
       dScore += dBasicScore;
     }
        }
    return dScore;
    }
      

  5.   

    input包含checkbox、radio、button、text、submit、hidden等属性的好不好?<input type="radio" name="seloption" value="1">A
    <input type="radio" name="seloption" value="2">B
    就是选项
    name相同的话,就是一个单选按钮组,根据不同的VALUE来判断选了哪个
    一个单选按钮组就是一组同名的集合,N道题的话是N组同名的集合,相当于一个二维的集合,我不知道该怎么写
      

  6.   

    噢,大意啊,没注意到你的 type是radio
      

  7.   

    还是这个方法应该可以的吧,反正每组里边只有一个value=1的function getf(){
       var dBasicScore = 0.0; // 分值 
       var dScore = 0.0; // 总分
       var inputs=document.getElementsByTagName("input");
       for(var i=0;i<inputs.length;i++){
          if(inputs[i].getAttribute("type")=="radio"){
             if(Number(inputs[i].value)==1){
      dScore += dBasicScore;
    }
     }
        }
    return dScore;
    }