Не получается вывести возвращаемое функцией значение

Тема в разделе "HTML, CSS, XML, JavaScript", создана пользователем greendoc, 11 мар 2008.

Статус темы:
Закрыта.
  1. greendoc

    greendoc Гость

    При скрытии колонок (кстати может кому функция пригодится..) их номера заносятся в str.. я хочу вывести её в отдельном div (при нажатии на ++++).. див выводится пустой.. где ошибка?

    Код (Text):
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    </head>
    <script type="text/javascript">
    var str='';
    function toggle(obj) {
    debugger;
    hidden_groups();
    var el = document.getElementById(obj);
    el.style.display = (el.style.display != 'none' ? 'none' : '' );
    }

    function hidden_groups() {
    debugger;
    var tbl = document.getElementById('table_id');
    var rows = tbl.getElementsByTagName('tr');
    var cels = rows[0].getElementsByTagName('th');
    for (var i=2; i < 6; i++) {
    if (cels[i].style.display == 'none') {str += 'number'+ i +'<br />'}
    };
    return str;
    }

    function show_hide_column(btn,gr_name) {
    //debugger;
    var gr_no;
    switch (gr_name) {
    case "Sales" :
    gr_no = 2;
    break;
    case "HR" :
    gr_no = 3;
    break;
    case "CSC" :
    gr_no = 4;
    break;
    case "AD" :
    gr_no = 5;
    break;
    case "FD" :
    gr_no = 6;
    break;
    default : alert('The nonexistent group is chosen !')
    }

    var tbl = document.getElementById('table_id');
    var rows = tbl.getElementsByTagName('tr');
    stl = btn.checked ? '' : 'none';

    // Group Name
    var cels = rows[0].getElementsByTagName('th')
    cels[gr_no].style.display=stl;
    }

    </script>

    <body>
    <table width="100%" border="1" cellpadding="0" cellspacing="0" bordercolor="#000000" id="table_id">
    <tr>
    <th bgcolor="#999999" scope="col" onclick="toggle('sh_div')">++++</th>
    <th bgcolor="#999999" scope="col">General</th>
    <th bgcolor="#999999" scope="col"><input type=checkbox id="gr2" onClick="show_hide_column(this,'Sales')" checked> Sales</th>
    <th bgcolor="#999999" scope="col"><input type=checkbox id="gr3" onClick="show_hide_column(this,'HR')" checked>
    HR</th>
    <th bgcolor="#999999" scope="col"><input type=checkbox id="gr4" onClick="show_hide_column(this,'CSC')" checked>
    CSC</th>
    <th bgcolor="#999999" scope="col"><input type=checkbox id="gr5" onClick="show_hide_column(this,'AD')" checked> AD</th>
    <th bgcolor="#999999" scope="col"><input type=checkbox id="gr6" onClick="show_hide_column(this,'FD')" checked> FD</th>
    </tr>
    </table>
    <!-- hidden div -->
    <div align="center" id="sh_div" style=" top:240px; HEIGHT:10px; WIDTH:150px; display:none; position:absolute" onclick="toggle('sh_div')">
    <table border="0" width="100%" bgcolor="#000000"
    cellspacing="1" cellpadding="2">
    <TBODY>
    <tr>
    <td align="middle" bgcolor="#FFFFE1">
    <script type="text/javascript">
    //hidden_groups();
    document.write(hidden_groups());
    </script>
    </td>
    </tr>
    </TBODY>
    </table>
    </div>
    </body>
    </html>
     
  2. Rjkz

    Rjkz Гость

    Ошибка в том что между тегами <TD></TD> , тэг <script> игнорируеться на сайте

    http://nik-we.narod.ru/e-table.html

    можете в этом убидиться , создайте таблицу нужной размерности нажав на "Создать" и попытайтесь в ячейку внести например тэг <font size=5> Hello </font> затем кликнете по другой ячейке ,а потом снова по той в которую это вписывали, вы увидите что текст в ячейки соответсвует введёному , а если вы введёте туда тэг <script>, и проделаете те же операции то обнаружете что этого тега там не будет,,,он затеряеться,,,

    если найдёте решение как вписывать в ячейки таблицы или в див <script>, и чтоб он исполнялся сообщите пожалуста здесь!
     
  3. greendoc

    greendoc Гость

    проблема была в том что
    Код (Text):
    <script type="text/javascript">
    //hidden_groups();
    document.write(hidden_groups());
    </script>
    у меня выполняется один раз, при выводе страницы, а в тот момент str - пуст. Когда я отображаю div на экране скрипт внутри <script></script> не выполняется заново.
    Решил проблему изменив функцию
    Код (Text):
    function toggle(obj) {
    hidden_groups();
    var el = document.getElementById(obj);
    el.style.display = (el.style.display != 'none' ? 'none' : '' );
    el.innerHTML = str;
    }
     
  4. Rjkz

    Rjkz Гость

    greendoc
    не выполняеться потому что игнорируеться именно так как я сказал?
     
  5. Vovochka

    Vovochka Гость

    Любой блок <script> исполняется лишь единожды в момент, когда он встречается браузеру при разборе страницы.
    + Функции типа document.write() исполняться лишь в момент отрисовки документа. Когда браузер отобразил страницу, они уже ничего не выведут.
     
  6. Rjkz

    Rjkz Гость

    ерунда если document.write() записать в функции и вызывать эту функцию,,то пичататься будет столько сколько нужно
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей