Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запись в нужную ячейку в таблице 
:(
    Опции темы
dsy
Дата 27.3.2007, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 19.1.2006

Репутация: нет
Всего: нет



Здрасьте всем!
Помогите, пожалуйста.
У меня есть таблица:

Код

<table>
<thead>
<tr>
<td>ФИО</td>
<td id="TabNum">Табельный номер</td>
<td id="personCount">Кол-во записей на сотрудника</td>
</tr>
</thead>
<tbody id="TBody">
<tr>
<td>Иванов И.И.</td>
<td>21</td>
<td>n/a</td>
</tr>
<tr>
<td>Петров П.П.</td>
<td>33</td>
<td>n/a</td>
</tr>
<tr>
<td>Иванов И.И.</td>
<td>21</td>
<td>n/a</td>
</tr>
</tdoby>
</table>


 и мне нужно пройтись по таблице, посчитать сколько раз встречается каждый человек и проставить в нужную ячейку (id="personCount")
это количество.
Попытался написать алгоритм. Конечно, он работает, т.к. писал интуитивно. Осталось разобраться с синтаксисом и правильно обратиться к свойствам ))
На JavaScript'e пишу очень редко, так что не судите строго.
Получилась примерно такая функция:
Код

//  Считает кол-во записей для каждого сотрудника и устанавливает его в соответствующую ячейку таблицы
function SetSubPeriodCountPerDriver(tabID, readCellID, writeCellID)
{
    var theTab = document.getElementById(tabID);      //getElementsByTagName('TR');
    var count = 0;
    val tdValue = null;
    for(var i=0; i<theTab.rows.length; i++)
    {
        tdValue = theTab[i].getElementById(readCellID).innerHTML;
        count = 1;
        for(var j=i+1; j<theTab.rows.length; j++)
        {
            if(theTab[i].getElementById(readCellID).innerHTML == tdValue)
                count++;
        }
        //  Записываем кол-во подпериодов в ячейку writeCellID
        for(var k=0; k<theTab.rows.length; k++)
        {
            if(theTab[k].getElementById(readCellID).innerHTML == tdValue)
                theTab[k].getElementById(writeCellID).innerHTML = count;
        }
    }    
}

Помогите, пожалуйста, исправить ошибки.
Заранее, благодарен.
PM MAIL   Вверх
vasac
Дата 27.3.2007, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 13
Всего: 36



Цитата(dsy @  27.3.2007,  17:04 Найти цитируемый пост)
tdValue = theTab[i].getElementById(readCellID).innerHTML;

Не знаю, что здесь имелось в виду, но правильно:
Код

tdValue = theTab.rows[ i ].cells[ 0 ].innerHTML

а еще правильнее:
Код

tdValue = theTab.rows[ i ].cells[ 0 ].firstChild.nodeValue

PM WWW   Вверх
SelenIT
Дата 27.3.2007, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Я бы использовал ассоциативный массив, наподобие такого:
Код

function SetSubPeriodCountPerDriver(table, readCellPos, writeCellPos)
{
    var TRs= table.rows;
    var count = {};
    for(var i=0; i<TRs.length; i++) // собираем "досье" на данные из readCellPos-того столбца
    {
        tdValue = TRs[i].cells[readCellPos].innerHTML;
        if (count[tdValue]) count[tdValue] = 1;
        else count[tdValue]++;
    }
    for(var i=0; i<TRs.length; i++) // пишем во writeCellPos-тый стоблец цифры из "досье"
    {
        TRs[i].cells[writeCellPos].innerHTML = count[TRs[i].cells[readCellPos].innerHTML];
    }
}

SetSubPeriodCountPerDriver(document.getElementsByTagName('table')[0], 0, 2);



--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.