2015-10-02 25 views
-1

不知道为什么,我getting.may是有该关键字的一些问题是在代码中使用。当我刚警报,它显示输出的document.getElementById未定义的错误

TypeError: document is undefined newhtml.html:30:16

只有一个输入文本
<html> 
    <head> 
     <title>TODO supply a title</title> 
     <meta charset="UTF-8"> 
     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <script> 
     function calcAvg(val) 
     { 

      var x=document.getElementById(val.id).value 
      var form=val.form; 
      var form_name=form.name; 
      var document=form_name.document; 
      var value=val.value; 
      var name=val.name; 
      alert(form.name +' '+document); 
      var valueOne = document.getElementById("txt1").value; 
      var valueTwo = document.getElementById('txt2').value; 
      var valueThree = document.getElementById('txt3').value; 
      var valueFour = document.getElementById('txt4').value; 
      var valueFive = document.getElementById('txt5').value; 
         performCalc(valueOne, valueTwo, valueThree, valueFour, valueFive); 
     } 

     function performCalc(valueOne, valueTwo, valueThree, valueFour, valueFive) 
     { 
      var calcResult = parseInt(valueOne) + parseInt(valueTwo) + parseInt(valueThree) + parseInt(valueFour) + parseInt(valueFive); 
      var averageResult = calcResult/5; 
      return averageResult; 
     } 
    </script> 
    </head> 
    <body> 
     <input type='text' id='txt1' name='txt1' value=0 onchange='calcAvg(this)'/> 
     <input type='text' id='txt2' name='txt2' value=0 onchange='calcAvg(this)'/> 
    <input type='text' id='txt3' name='txt3' value=0 onchange='calcAvg(this)'/> 
    <input type='text' id='txt4' name='txt4' value=0 onchange='calcAvg(this)'/> 
    <input type='text' id='txt5' name='txt5' value=0 onchange='calcAvg(this)'/> 
    <input type='text' id='averageResult' name='averageResult' value='0' /> 
    </body> 
</html> 
+0

1,2,3,4 ...严重的是,在它*硬*告诉我们这行是第30? ESP。第30行似乎是'}'? –

+0

使用'this.id'获得输入ID为 – Mostafa

+0

FWIW,'var x = document.getElementById(val.id).value'是编写'var x = val.value'非常长的一种方式,重新传入*是*从'document.getElementById'返回的内容。 –

回答

0

此行是没有意义的:

var document=form_name.document; 

删除它。

你在这个函数的开头还有一堆其他的行似乎没有任何用处,也会导致错误。

你也不是使用从你的performCalc函数返回的值。

这里有一个版本的那些东西删除,其中performCalc结果分配给averageResult元素:

function calcAvg(val) { 
 

 
    var valueOne = document.getElementById("txt1").value; 
 
    var valueTwo = document.getElementById('txt2').value; 
 
    var valueThree = document.getElementById('txt3').value; 
 
    var valueFour = document.getElementById('txt4').value; 
 
    var valueFive = document.getElementById('txt5').value; 
 
    document.getElementById("averageResult").value = performCalc(valueOne, valueTwo, valueThree, valueFour, valueFive); 
 
} 
 

 
function performCalc(valueOne, valueTwo, valueThree, valueFour, valueFive) { 
 
    var calcResult = parseInt(valueOne) + parseInt(valueTwo) + parseInt(valueThree) + parseInt(valueFour) + parseInt(valueFive); 
 
    var averageResult = calcResult/5; 
 
    return averageResult; 
 
}
<input type='text' id='txt1' name='txt1' value=0 onchange='calcAvg(this)' /> 
 
<input type='text' id='txt2' name='txt2' value=0 onchange='calcAvg(this)' /> 
 
<input type='text' id='txt3' name='txt3' value=0 onchange='calcAvg(this)' /> 
 
<input type='text' id='txt4' name='txt4' value=0 onchange='calcAvg(this)' /> 
 
<input type='text' id='txt5' name='txt5' value=0 onchange='calcAvg(this)' /> 
 
<input type='text' id='averageResult' name='averageResult' value='0' />

0

必须使用this.id用于获取ID为每个输入 例如:

and clean val from funct离子和val.id

function calcAvg(val) 
     { 

      var x=document.getElementById(val.id).value 
      var form=val.form; 
      var form_name=form.name; 
      var document=form_name.document; 
      var value=val.value; 
      var name=val.name; 
      alert(form.name +' '+document); 
      var valueOne = document.getElementById("txt1").value; 
      var valueTwo = document.getElementById('txt2').value; 
      var valueThree = document.getElementById('txt3').value; 
      var valueFour = document.getElementById('txt4').value; 
      var valueFive = document.getElementById('txt5').value; 
         performCalc(valueOne, valueTwo, valueThree, valueFour, valueFive); 
     }