• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

  • Автор темы greendoc
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

greendoc

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

Код:
<!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>
 
R

Rjkz

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



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

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

greendoc

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

Rjkz

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

Vovochka

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

Rjkz

Функции типа document.write() исполняться лишь в момент отрисовки документа. Когда браузер отобразил страницу, они уже ничего не выведут.

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!