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

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

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

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

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

Проблема с доком в Web

  • Автор темы KLif
  • Дата начала
K

KLif

Всем привет.

1. есть форма, в которой при заполнении опр. полей и нажатии на кнопку, все данные передаются в скрытое поле ...
2. после этого вызывается JS функция, которая по данным поля строит таблицу и выбрасывает её в <span>

В чём проблема ... не могу понять, куда повесить вызов функции, чтоб при сохранение дока и открытии его заного вызывалась эта функция и строила таблицу ... Почему то не могу добраться до поля, когда открываю док заного ... document.getElementById - не находит объект ...

Кто, что думает?
 
S

Sandr

на форме галка generate HTML for all fields стоит?

ЗЫ: не понял когда Вам нужно функцию вызывать, при сохранении, или при открытии?
при открытии - onload
при сохранении onSubmit...
 
K

KLif

на форме галка generate HTML for all fields стоит?

ЗЫ: не понял когда Вам нужно функцию вызывать, при сохранении, или при открытии?
при открытии - onload
при сохранении onSubmit...

Да стоит.

Нужно на onload, туда и вставляю вызов функции ... НО открытый док не находится в состоянии редактирования и видимо из-за этого document.getElementById возвращает null ... хотя я не уверен, это первое что в голову пришло ...
 
S

Sandr

нарисуйте поле руками <input name="myField" value ="тут компутет текст, который наследует значение из нужного Вам поля"> А поле то скройте от ВЕБа вообще...

ЗЫ: А поле, кстати, не компутет у вас?
 
K

KLif

нарисуйте поле руками <input name="myField" value ="тут компутет текст, который наследует значение из нужного Вам поля"> А поле то скройте от ВЕБа вообще...

ЗЫ: А поле, кстати, не компутет у вас?

Не компутет.

А смысл? Поле нарисованное руками, тоже должно быть скрыто и чем оно отличается от лотусовского? ... ведь при создании дока табличка нормально рисуется ...
 
S

Sandr

кхм... так то поле скрыто? А как Вы его скрыли? Средствами нотеса? А если не скрывать его, то все работает?
 
F

fvoice

<!--QuoteBegin-KLif+7:02:2008, 15:18 -->
<span class="vbquote">(KLif @ 7:02:2008, 15:18 )</span><!--QuoteEBegin-->2. после этого вызывается JS функция, которая по данным поля строит таблицу и выбрасывает её в <span>
[snapback]97009" rel="nofollow" target="_blank[/snapback]​
[/quote]
это как?

т.е. если документ новый то таблицу не надо строить, а если нет то строить?

покажите код в котором вы обращаетесь к полю + HTML код поля из браузера
 
K

KLif

это как?

т.е. если документ новый то таблицу не надо строить, а если нет то строить?

покажите код в котором вы обращаетесь к полю + HTML код поля из браузера

Нет, вы не правильно понял ... в форме при создании дока строится таблица и сразу отображается ... простой пример: етсь док компании в нём блок с таблицей сотрудников компании и кнопка добавить ... дык вот мы жмём на кнопку и добавляется новый сотрудник и табличка перересовывается ... а все данные для вывода таблицы в спец поле ...

Теперь по шагам:
1. у нас новая компания, создаём док ... добавляем сотрудников - видим как вывелась таблица, сохраняем нашу компанию ... закрываем док
2. открываем только что сохранённый док, естесно span в который выводилась табличка - очистелся, нужно заного отрисовать её, но поле которе хранит данные таблицы почему то недоступно (функция отрисовки висит на onload)

функция прорисовки: Technology - хранит структуру таблицы ...
Код:
function CreateTechnologyTable()
{
var TechTable = document.getElementById("TechnologyTable")
TechTable.style.display = "none"

var tech = document.getElementById("Technology").value
var nTable 
nTable = "<hr>"
nTable = nTable + "<table>"
nTable = nTable + "<tr><td>Наименование</td><td>Комментарии</td></tr>"
var i
var list, element
list = tech.split(";")

for (i = 0; i < list.length - 1; i++)
{
element = list[i].split("|")	
nTable = nTable + "<tr>"
nTable = nTable + "<td>"+element[0]+"</td>"
nTable = nTable + "<td>"+element[1]+"</td>"
nTable = nTable + "<td><input type=button name=drow"+i+" value=удалить onclick=DelRowTechnologyTable("+i+")></td>"
nTable = nTable + "<td><input type=button name=erow"+i+" value=редактировать onclick=NewWindowForEdit("+i+")></td>"
nTable = nTable + "</tr>"
}

nTable = nTable + "</table>"
nTable = nTable + "<hr>"

var chek = document.getElementsByName("TechnologyType")
if (chek[0].checked == false)
{
document.getElementById("TechName1").value = ""
}
document.getElementById("TechComment").value = ""

TechTable.innerHTML = nTable
TechTable.style.display = "inline"

}
HTML
Код:
<input name="Technology" type="hidden" value="технология 1|wqerwer;технология 1|wqerwrwer;">
 
S

Sandr

:rolleyes:
все просто...
Рисуете на форме заголовок таблици
<table id="TechnologyTable"></table>

между этими тегами вставляете компутет текст, который вычисляете так:

Код:
@Implode( "<TR> <TD>" + Technology+ "</TD></TR>"; @NewLine)

естесственно помечайте все как ХТМЛ...

Ну, это как примерчик.. переделать подж Вашу таблицу легко можно...
 
F

fvoice

Для: KLif
Вы пишите:
Код:
var tech = document.getElementById("Technology").value
а у
Код:
<input name="Technology" type="hidden" value="технология 1|wqerwer;технология 1|wqerwrwer;">
не указан id
попробуйте:
Код:
<input id="Technology" name="Technology" type="hidden" value="технология 1|wqerwer;технология 1|wqerwrwer;">

хотя способ отображения действительно необычный..

проще, как пишет господин Sandr прям на форме все это нарисовать..
 
K

KLif

Вроде получилось .... всем спасибо

Это висит на поле ...

Код:
crTable := "";
list := @Explode(Technology; ";");
@For
(
i:=1; i < @Elements(list)+1; i := i + 1;
element := @Explode(list[i]; "|");
crTable := @Implode( crTable + "<TR>");
crTable := @Implode( crTable + "<TD>"+element[1]+"</TD>");
crTable := @Implode( crTable + "<TD>"+element[2]+"</TD>");
crTable := @Implode( crTable + "</TR>")
);
crTable
 
Мы в соцсетях:

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