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

php таблицы + JavaScript

  • relictx

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

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

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

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

    Spritz 4 февраля 2009 г. 12: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="<input type=text name=a"+i+">"} //Нумеруем 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++) {
    item = parseFloat(document.form1["a"+i].value);  //Здесь жалуется… вроде все так же как и в первом скрипте
    item1 = item1+item};
    itog = item1/exp;
    document.form1["s"+kesh].value = itog;


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

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

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

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

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


    и сравни :)
  • relictx

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

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


    попробуй
    y2.innerHTML="<input type=text id='a"+i+"' />"

    и
    document.getElementById("a"+i).value



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

    document.getElementById("a"+i).value

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

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

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

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

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

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

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


    function addRow(tblId)
    {

    var th_count = document.getElementsByTagName("th").length;
    var tr_count = document.getElementsByTagName("tr").length;
    var td_count = document.getElementsByTagName("td").length;
    var x=document.getElementById('tblSample').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="<input type=text id='a"+i+"' />";}


    var y3=x.insertCell(th_count-2)
    y3.innerHTML="<input type=button name=s"+tr_count+" onclick=Itog('tblSample')>"

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

    }



    function Itog(tblId)
    {

    var th_count = document.getElementsByTagName("th").length;
    var tr_count = document.getElementsByTagName("tr").length;
    var td_count = document.getElementsByTagName("td").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("a"+i).value);
    item1 = item1+item};
    itog = item1/exp;



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


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

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

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


    }

  • Josh

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

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

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

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

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


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


    Вот Html, сорри…


    <?
    session_start();
    $_SESSION['exp']=3;
    ?>

    <html>

    <head>
    <script type="text/javascript" src="functions.js"></script>



    </head>

    <body>

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

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



    </body>

    </html>
  • Josh

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

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

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

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

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


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


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

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

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



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


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

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

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

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

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