Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.06.2014, 10:23
Новичок на форуме
Отправить личное сообщение для ArMikael Посмотреть профиль Найти все сообщения от ArMikael
 
Регистрация: 25.06.2014
Сообщений: 3

Динамическая замена HTML в таблице
Дано: таблица с большим набором имен и оценок (код сокращаю до минимума).
Код:
<table>
    <tr>
      <td>Newton</td>
      <td>75</td>
    </tr>
    <tr>
      <td>Darwin</td>
      <td>94</td>
    </tr>
  </tbody>
  <tfoot>
    <tr>
      <td>Average</td>
      <td>?</td>
    </tr>
  </tfoot>
</table>
Необходимо высчитать среднюю оценку и вместо знака вопроса подставить получившиеся значение. Запутался немного с вычленением нужной клетки со знаком вопроса и не могу динамически заменить значение самой клетки.

Подскажите, где моя ошибка.
function calcAverage(){
        var grades = document.getElementsByTagName("td");
        var average = Number;
        var sum = 0;
        var divider =0;
        for (i=0; i < grades.length; i++){
	        //if(typeof(grades[i].innerHTML) == Number) {
	        if ((i%2) && (grades[i].innerHTML !== "?")) {
	        	grade = Number(grades[i].innerHTML);
	        	sum = sum + grade;
	        	alert(sum);
	        	return sum;
	        	divider++;
	        	return divider;   
	   	    	}

	   	    /* else if (grades[i].innerHTML=="?") {

	   	   	} */

	   	    var tfooter = document.getElementsByTagName('tfoot').outerHTML;
			var questionMark = tfooter.getElementsByTagName('tr').lastChild.innerHTML;
			alert(questionMark);
			questionMark.innerHTML = sum/divider;

	   	    //var questionMark = document.getElementsByTagName("tfoot tr").lastChild.innerHTML;
	   	    //questionMark.innerHTML = 0;
	   	    //alert(sum/divider);
Ответить с цитированием
  #2 (permalink)  
Старый 25.06.2014, 10:42
Аспирант
Отправить личное сообщение для jule Посмотреть профиль Найти все сообщения от jule
 
Регистрация: 23.02.2013
Сообщений: 57

ArMikael,
не?
<html>
<body>
<table>
    <tr>
      <td>Newton</td>
      <td>75</td>
    </tr>
    <tr>
      <td>Darwin</td>
      <td>94</td>
    </tr>
  <tfoot>
    <tr>
      <td>Average</td>
      <td>?</td>
    </tr>
  </tfoot>
</table>

<script type="text/javascript">

function calcAverage(){
        var grades = document.getElementsByTagName("td");
        var average = Number;
        var sum = 0;
        var divider =0;
	var grade;
        for (i=0; i < grades.length; i++){
	        //if(typeof(grades[i].innerHTML) == Number) {
	        if ((i%2) && (grades[i].innerHTML !== "?")) {
	        	grade = Number(grades[i].innerHTML);
	        	sum = sum + grade;
	        	divider++;  
	   	    	}

	   	     else if (grades[i].innerHTML=="?") {
			var average = Number(sum/divider);
			var tfoot = document.getElementsByTagName("tfoot")[0];
			tfoot.getElementsByTagName("tr")[0].children[1].innerHTML = average;
	   	   	} 

	   	    
	}
}
calcAverage();

</script>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 25.06.2014, 11:04
Новичок на форуме
Отправить личное сообщение для ArMikael Посмотреть профиль Найти все сообщения от ArMikael
 
Регистрация: 25.06.2014
Сообщений: 3

jule, спасибо, действительно помогло.
А можете объяснить, почему не сработал мой вариант и принцип работы
var tfoot = document.getElementsByTagName("tfoot")[0];
?
Указывая нулевую ячейку массива и тем самым превращая tfoot в массив мы говорим собрать в эту ячейку все, что находится внутри тега tfoot?
Ответить с цитированием
  #4 (permalink)  
Старый 25.06.2014, 11:15
Аспирант
Отправить личное сообщение для jule Посмотреть профиль Найти все сообщения от jule
 
Регистрация: 23.02.2013
Сообщений: 57

ArMikael,
var tfoot = document.getElementsByTagName("tfoot");
alert(typeof tfoot)//В Chrome,например, выведет "бла-бла-бла HTMLCollection"

Т.е. это несколько элементов (на это указывает typeof - ... Collection и var tfoot = ... getElements... ).
Чтобы обратиться к одному их них, например, к первому, мы дописываем в квадратных скобках индекс.

Цитата:
Указывая нулевую ячейку массива и тем самым превращая tfoot в массив...
Ссылка на элемент уже находится в массиве.Т.е. мы уже работаем с массивом. Подробнее читайте здесь:http://javascript.ru/tutorial/dom/search#drugie-sposoby
Ответить с цитированием
  #5 (permalink)  
Старый 25.06.2014, 11:47
Новичок на форуме
Отправить личное сообщение для ArMikael Посмотреть профиль Найти все сообщения от ArMikael
 
Регистрация: 25.06.2014
Сообщений: 3

jule,
Спасибо за пояснения и за ссылку. Понял, что при таком запросе возвращается список узлов, а номером ячейке мы указываем какой именно узел на интересует.
Благодарю за помощь!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена <li> на html Bezlepkin Events/DOM/Window 1 20.02.2014 01:23
Замена html на JvaScript sedoi Общие вопросы Javascript 7 04.05.2011 19:47
Замена текста в атрибуте HTML тега, например часть url vasa666 Общие вопросы Javascript 6 24.02.2011 10:18
Динамическая HTML форма (FireFox - работает, IE - не работает) dm1tr1y Общие вопросы Javascript 10 11.12.2009 15:59
Динамическая смена рисунка на html, используя локальные рисунки с компа пользователя evgen28 Общие вопросы Javascript 9 27.03.2009 13:14