ФорумПрограммированиеJavaScript → php таблицы + JavaScript

php таблицы + JavaScript

  • relictx

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 3 февраля 2009 г. 6:32, спустя 22 минуты 55 секунд

    Разобрался) Все, спасибо)
  • relictx

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 4 февраля 2009 г. 4:15, спустя 21 час 43 минуты 14 секунд

    Последний вопрос к уважаемым экспертам и можете закрывать, мне остался штрих доделать…

    Что за ошибка: document.form1.[…].value есть null или не является объектом?

    У меня два скрипта, один добавляет строку, другой считает, по нажатию сумму из добавленных td-шек и введенных в них данных.
    В 1-м скрипте(добавление строк) нумерую td-шки:

    var th_count = document.getElementsByTagName("th").length;
    var tr_count = document.getElementsByTagName("tr").length;
    var td_count = document.getElementsByTagName("td").length;



    for (var i=td_count-th_count+1; i<td_count-2; i++) {
    var y2=x.insertCell(1)
    y2.innerHTML=&quot;<input type=text name=a&quot;+i+&quot;>&quot;} //Нумеруем td-шки

    Вроде бы не жалуется…

    А вот во втором не может прочитать, возмущаясь ошибкой…

    var th_count = document.getElementsByTagName(&quot;th&quot;).length;
    var tr_count = document.getElementsByTagName(&quot;tr&quot;).length;
    var td_count = document.getElementsByTagName(&quot;td&quot;).length;



    for (var i=td_count-th_count+1; i<td_count-2; i++) {
    item = parseFloat(document.form1[&quot;a&quot;+i].value);  //Здесь жалуется… вроде все так же как и в первом скрипте
    item1 = item1+item};
    itog = item1/exp;
    document.form1[&quot;s&quot;+kesh].value = itog;


    Никак не могу багу зафиксить, заранее спасибо!
  • Josh

    Сообщения: 2009 Репутация: N Группа: Кто попало

    Spritz 4 февраля 2009 г. 4:21, спустя 5 минут 39 секунд

    попробуй
    y2.innerHTML=&quot;<input type=text id=&#39;a&quot;+i+&quot;&#39; />&quot;;
    alert(&quot;a&quot;+i);

    и
    document.getElementById(&quot;a&quot;+i).value
    alert(&quot;a&quot;+i);


    и сравни :)
  • relictx

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 4 февраля 2009 г. 4:28, спустя 7 минут 22 секунды


    попробуй
    y2.innerHTML=&quot;<input type=text id=&#39;a&quot;+i+&quot;&#39; />&quot;

    и
    document.getElementById(&quot;a&quot;+i).value



    Обращается к строке:

    document.getElementById(&quot;a&quot;+i).value

    и пишет: Требуется объект
  • Josh

    Сообщения: 2009 Репутация: N Группа: Кто попало

    Spritz 4 февраля 2009 г. 4:32, спустя 4 минуты 6 секунд

    или дай сюда страничку
  • relictx

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 4 февраля 2009 г. 4:36, спустя 3 минуты 43 секунды

    Вот весь код, и две функции(скрипта). Смысл в том, что для каждой строки своя сумма, я думаю это понятно)


    function addRow(tblId)
    {

    var th_count = document.getElementsByTagName(&quot;th&quot;).length;
    var tr_count = document.getElementsByTagName(&quot;tr&quot;).length;
    var td_count = document.getElementsByTagName(&quot;td&quot;).length;
    var x=document.getElementById(&#39;tblSample&#39;).insertRow(-1)


    var y1=x.insertCell(0)
    y1.innerHTML=tr_count;

    for (var i=td_count-th_count+1; i<td_count-2; i++) {
    var y2=x.insertCell(1)
    y2.innerHTML=&quot;<input type=text id=&#39;a&quot;+i+&quot;&#39; />&quot;;}


    var y3=x.insertCell(th_count-2)
    y3.innerHTML=&quot;<input type=button name=s&quot;+tr_count+&quot; onclick=Itog(&#39;tblSample&#39;)>&quot;

    var y4=x.insertCell(th_count-1)
    y4.innerHTML=&quot;<input type=text name=color>&quot;

    }



    function Itog(tblId)
    {

    var th_count = document.getElementsByTagName(&quot;th&quot;).length;
    var tr_count = document.getElementsByTagName(&quot;tr&quot;).length;
    var td_count = document.getElementsByTagName(&quot;td&quot;).length;

    var item;
    var item1;
    var kesh;

    item1 = 0;
    exp = th_count-3;

    kesh=td_count/th_count;


    for (var i=td_count-th_count+1; i<td_count-2; i++) {
    item = parseFloat(document.getElementById(&quot;a&quot;+i).value);
    item1 = item1+item};
    itog = item1/exp;



    document.form1[&quot;s&quot;+kesh].value = itog;


    if (itog>=0.5){
    document.form1.color.value = &quot;Допустимый&quot;;
    document.form1.color.style.backgroundColor = &quot;yellow&quot;};

    if (itog<0.5){
    document.form1.color.value = &quot;Критический&quot;;
    document.form1.color.style.backgroundColor = &quot;red&quot;};

    if (itog>=1.5){
    document.form1.color.value = &quot;Эффективный&quot;;
    document.form1.color.style.backgroundColor = &quot;green&quot;};


    }

  • Josh

    Сообщения: 2009 Репутация: N Группа: Кто попало

    Spritz 4 февраля 2009 г. 4:38, спустя 1 минуту 50 секунд

    ты мне предлагаешь ещё html для этого написать? сохрани страничку или выложи где нибудь
  • relictx

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 4 февраля 2009 г. 4:39, спустя 1 минуту 24 секунды


    ты мне предлагаешь ещё html для этого написать? сохрани страничку или выложи где нибудь


    Вот Html, сорри…


    <?
    session_start();
    $_SESSION[&#39;exp&#39;]=3;
    ?>

    <html>

    <head>
    <script type=&quot;text/javascript&quot; src=&quot;functions.js&quot;></script>



    </head>

    <body>

    <form name=&quot;form1&quot;>
    <p>
    <input type=&quot;button&quot; value=&quot;Добавить вопрос&quot; onclick=&quot;addRow(&#39;tblSample&#39;)&quot; />
    <input type=&quot;button&quot; value=&quot;Подсчитать&quot; onclick=&quot;Itog(&#39;tblSample&#39;)&quot; />
    </p>
    <table id=&quot;tblSample&quot; border=&quot;1&quot;>

    <thead>
    <tr>
    <th>Вопросы</th>
    <?
    for ($i=1;$i<=$_SESSION[&#39;exp&#39;];$i++){
    echo &#39;<th>Эксперт &#39;.$i.&#39; </th>&#39;; }
    ?>
    <th>Сумма</th>
    <th>Вывод</th>
    </tr>
    </thead>
    </table>
    </form>



    </body>

    </html>
  • Josh

    Сообщения: 2009 Репутация: N Группа: Кто попало

    Spritz 4 февраля 2009 г. 4:51, спустя 11 минут 6 секунд

    поставь фаербаг у тебя первые td вообще нумеруються &quot;a-5&quot;, &quot;а-4&quot; Видимо 0 не учитываешь. гдето в мат части ошипку исчи :)
  • relictx

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 4 февраля 2009 г. 4:59, спустя 8 минут 33 секунды


    поставь фаербаг у тебя первые td вообще нумеруються &quot;a-5&quot;, &quot;а-4&quot; Видимо 0 не учитываешь. гдето в мат части ошипку исчи :)


    Знаю, но форы вроде и там и там одни и те же, должно было по сути правильно искать… Странно…
    Ладно, буду дальше мучать яву))
  • Josh

    Сообщения: 2009 Репутация: N Группа: Кто попало

    Spritz 4 февраля 2009 г. 5:59, спустя 1 час 1 секунду



    поставь фаербаг у тебя первые td вообще нумеруються &quot;a-5&quot;, &quot;а-4&quot; Видимо 0 не учитываешь. гдето в мат части ошипку исчи :)


    Знаю, но форы вроде и там и там одни и те же, должно было по сути правильно искать… Странно…
    Ладно, буду дальше мучать яву))
    Ну какже правильно, когда ты в одной функции добавляешь td, а в другой считаешь тоже самое, но не учитываешь что уже добавил
  • relictx

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 5 февраля 2009 г. 2:10, спустя 20 часов 10 минут 58 секунд

    Все всем спасибо! Вопрос окончательно снят) Задача выполнена!
    Для решения ввел hidden поля, с данными о номерах td-шек и кол-ве экспертов.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!