Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.09.2009, 23:15
Интересующийся
Отправить личное сообщение для alk0v Посмотреть профиль Найти все сообщения от alk0v
 
Регистрация: 03.09.2009
Сообщений: 10

Парсинг данных
Приветствую, уважаемые. Помогите разрешить следующую проблему:

Есть необходимость парсить данные, находящиеся в конце документа и обрабатывать их в дальнейшем, написал такой скрипт:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html><head>
<body onLoad="init()">
<script language='javascript'>
var settings = null;
var setid = null;
function init()
{
var elements = document.body.getElementsByTagName("settings");
settings = elements;
}
</script>

<input onclick="window.alert(settings[0].Out22);" value="press" type="button">

</body></html>
<settings
 Out11 = "1"
 Out22 = "0"
 Out33 = "0"
 Out44 = "1"
/>
/>


скрипт нормально работает в IE и возвращает 0, но не работает в firefox, пишет undefined,
для того, чтобы он заработал, нужно было поменять строку
<input onclick="window.alert(settings[0].Out22);" value="press" type="button">

на
<input onclick="window.alert(settings[0].attribute[1].value);" value="press" type="button">

но тогда он не работает в IE, подскажите пожалуйста, где косяк?
Ответить с цитированием
  #2 (permalink)  
Старый 03.09.2009, 23:47
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

А зачем передавать параметры в DOM, если можно прямо в JS и написать?
Ответить с цитированием
  #3 (permalink)  
Старый 04.09.2009, 00:22
Интересующийся
Отправить личное сообщение для alk0v Посмотреть профиль Найти все сообщения от alk0v
 
Регистрация: 03.09.2009
Сообщений: 10

Задумка в том, чтобы сервер (железка на микроконтроллере) менял текстовый файл с настройками, а страничка его уже забирала и с согласно настройкам меняла состояние элементов формы, либо, если не получится с отдельным файлом, просто дописывала в конец страницы а не растыкивала элементы по всему html

p.s.: в IE8 заработали оба варианта
Ответить с цитированием
  #4 (permalink)  
Старый 04.09.2009, 00:26
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

С железкой все понятно. Зачем данные формировать в виде тега, если можно в виде JS-объекта?
Ответить с цитированием
  #5 (permalink)  
Старый 04.09.2009, 00:31
Интересующийся
Отправить личное сообщение для alk0v Посмотреть профиль Найти все сообщения от alk0v
 
Регистрация: 03.09.2009
Сообщений: 10

Может я Вас не так понял, подскажите тогда решение... Суть в следующем, есть коробочка с 4-мя релейными выходами, которая управляется через веб-интерфейс, просто 4 чекбокса стоят, которыми можно включать и выключать реле, но если реле уже включено, на форме нужно, чтобы галочка в соответствующем чекбоксе тоже стояла. Из всех известных мне вариантов передачи информации с сервера на страницу без глобального изменения самого шаблона страницы на сервере, в голову пришел только такой вариант. Скрипт парсит кусок с настройками и соответсвующим образом расставляет галочки... Буду благодарен за любой дельный совет по данному вопросу
Ответить с цитированием
  #6 (permalink)  
Старый 04.09.2009, 00:38
Интересующийся
Отправить личное сообщение для alk0v Посмотреть профиль Найти все сообщения от alk0v
 
Регистрация: 03.09.2009
Сообщений: 10

Вы предлагаете использовать файл со скриптом, в котором просто определить переменные, соответствующие настройкам?
Ответить с цитированием
  #7 (permalink)  
Старый 04.09.2009, 00:52
Интересующийся
Отправить личное сообщение для alk0v Посмотреть профиль Найти все сообщения от alk0v
 
Регистрация: 03.09.2009
Сообщений: 10

Большое спасибо за совет, действительно все оказалось элементарно просто... Идея с парсингом была взята из случая, когда есть массив таких элементов, а у меня один всего, определил переменные во внешнем скрипте и все заработало
Ответить с цитированием
  #8 (permalink)  
Старый 04.09.2009, 09:41
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Я имел в виду, написать вместо
Сообщение от alk0v
<settings Out11 = "1" Out22 = "0" Out33 = "0" Out44 = "1" />
<script type="text/javascript">var settings = {out11: 1, out22: 0};</script>
Ответить с цитированием
  #9 (permalink)  
Старый 11.09.2009, 02:24
Интересующийся
Отправить личное сообщение для alk0v Посмотреть профиль Найти все сообщения от alk0v
 
Регистрация: 03.09.2009
Сообщений: 10

возникла еще одна проблема, теперь связанная с обновлением данных. По Вашему совету сделал следующее:
в заголовке html добавил строку
<script type="text/javascript" src="files/settings.txt"></script>

в файле settings.txt все мои переменные объявлены как глобальные и я с ними нормально работаю, вот его содержимое:
var outs = [1,0,1,0];
var uptime = 199141000;
var sens = [0,'01:10:34 10.12.2009','05:10:34 10.12.2009',0];


т.е. и sens и outs у меня массивы с четырьмя элементами в каждом.

Но появилась необходимость опрашивать значение переменной sens раз в секунду (устройство при изменении состояния просто перезаписывает этот файл настроек, т.е. он может обновляться в процессе работы)

Решения, как переинициализировать глобальные переменные раз в секунду без полной перезагрузки страницы я не нашел, поэтому сделал отдельный файл sens.txt в котором содержится следующая запись:
[0,'01:10:34 10.12.2009','05:10:34 10.12.2009',0]
; и устройство, соответственно, перезаписывает только этот файл sens.txt

данный файл я запрашиваю 1 раз в секунду с помощью процедуры XMLHttpRequest, а затем делаю присвоение
sens = responseText, но строка возвращается в виде одной стринговой переменной "[0,'01:10:34 10.12.2009','05:10:34 10.12.2009',0]"
Можно ли ее как-то обратно преобразовать в массив с четырьмя элементами, или может есть альтернативное решение?
Ответить с цитированием
  #10 (permalink)  
Старый 11.09.2009, 03:14
Интересующийся
Отправить личное сообщение для alk0v Посмотреть профиль Найти все сообщения от alk0v
 
Регистрация: 03.09.2009
Сообщений: 10

нашел решение, периодически вызываю следующий скрипт:

var scr = document.createElement('script');
scr.setAttribute('src','files/settings.txt');
document.body.appendChild(scr);


при таком подходе дополнительный файл не нужен и вся страница не перегружается, единственное, что смущает - изменяется строка статуса, в ней видно, что каждую секунду идет запрос. Может есть более оптимальное решение?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите исправить скрипт по поиску в базе данных dok_sj2 Internet Explorer 2 29.06.2009 20:04
Синхронный запрос данных по AJAX Shasoft AJAX и COMET 2 03.03.2009 14:07
Хранимая область данных. PolarWolf Общие вопросы Javascript 17 14.01.2009 18:25
Сохранение данных на стороне клиента средствами Javascript baal1988 Events/DOM/Window 4 24.08.2008 21:32
передача данных между формами Yurii Общие вопросы Javascript 2 30.04.2008 20:52