2013-11-12 5 views
0

Я пытаюсь получить среднее значение из 4 классов и передать его в текстовое поле.Как правильно установить значение текстового поля с помощью javaScript?

Это делает получить среднее, единственная часть, которая не работает это grade.value = grade; часть

Вот мой код:

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Week #10 JavaScript Assignment: Problem #1</title> 
<script type = "text/javascript"> 
function calcgrade(one,two,three,four){ 
    sum = parseInt(one.value) + parseInt(two.value) + parseInt(three.value) + parseInt(four.value); 
    grade = sum/4; 
    grade.value = grade; 
} 
</script> 
</head> 
<body> 
<h1>Calculate Grade</h1> 
<form> 
    <table> 
     <tr> 
      <th>Assignment #</th> 
      <th>Grade</th> 
     </tr> 
     <tr> 
      <td>1</td> 
      <td><input type="text" id="one" name="one"></td> 
     </tr> 
     <tr> 
      <td>2</td> 
      <td><input type="text" id="two" name="two"></td> 
     </tr> 
     <tr> 
      <td>3</td> 
      <td><input type="text" id="three" name="three"></td> 
     </tr> 
     <tr> 
      <td>4</td> 
     <td><input type="text" id="four" name="four"></td> 
     </tr> 
     <tr><td colspan="2"><input type="button" onclick="calcgrade(one, two, three, four)" value="Calculate Grade"></td></tr> 
     <tr> 
      <td>Grade:</td> 
      <td><input type="text" id="grade" name="grade"></td> 
     </tr> 
    </td> 
</form> 
</body> 
</html> 
+0

Вы должны использовать 'декларации var' объявить локальные переменные, а не использовать глобальные переменные для всего. – Barmar

ответ

2

Использование
document.getElementById('grade').value=grade;

2

вам нужно, чтобы получить элемент в JavaScript

gradeEle = document.getElementById("grade"); 
gradeEle.value = grade; 
1

Должно быть:

document.getElementById('grade').value = grade; 
1

Вы пытаетесь повторно использовать grade для двух разных значений, но он может содержать только один из них.

grade.value = grade; 
//^element 
//    ^division result 

Вы либо хотите использовать другую переменную:

var result = sum/4; 
grade.value = result; 

Или, вы можете пропустить его целиком:

grade.value = sum/4; 

Хотя, не отметить, что автоматические глобалам для id s не всегда гарантированы, и обычно их не рекомендуется зависеть от них.

Вы можете получить доступ к любым элементам name d из <form> и наоборот.

<input type="button" onclick="calcgrade(this.form)" ...> 
function calcgrade(form){ 
    var sum = parseInt(form.one.value) + parseInt(form.two.value) + parseInt(form.three.value) + parseInt(form.four.value); 
    form.grade.value = sum/4; 
} 

Или используйте getElementById(), чтобы найти друг конкретно:

function calcgrade() { 
    var grade = document.getElementById('grade'); 
    var one = document.getElementById('one'); 
    // etc. 
} 
+2

Он никогда не устанавливал 'класс' в элемент. – Barmar

+0

@ Barmar Не обязательно. http://jsfiddle.net/YHFxN/ (Это log 'false' или' DIV'?) Автоматические глобальные переменные поддерживаются во многих современных браузерах и в настоящее время документируются в черновиках из WHATWG. http://stackoverflow.com/a/6381766 –

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