Управление таблицей
Доброго дня всем!
Програмлю на Java для удовольствия так что отношу себя к Новичкам.:) Отличный форум, покурив его много чему научился!!!:thanks: Есть такая проблемка, нужно скажем так распарсить страничку, на этой странице я выкусываю только таблицу. Что я сделал: загоняю адрес страницы в браузер, получаю указатель на таблицу, обрабатываю её, может коряво с точки зрения проф. но работает. вот табличка
<div style="overflow: auto; height: 480px;" id="block_data">
<table cellpadding="3" cellspacing="0" width="100%">
<tr>
<td class="chnow" align="center" valign="top">1111</td>
<td class="chnow1" valign="top">aaaaaa</td>
</tr>
<tr>
<td class="chnow" align="center" valign="top">2222</td>
<td class="chnow1" valign="top">bbbbbb</td>
</tr>
<tr bgcolor="#efefef">
<td class="chnow" align="center" valign="top">
<a name="now" id="now">3333</a> </td>
<td valign="top">cccc</td>
</tr>
<tr>
<td class="chnow" align="center" valign="top">4444</td>
<td valign="top">dddddddddddd</td>
</tr>
<tr>
<td class="chnow" align="center" valign="top">5555</td>
<td valign="top">eeeeeeeeeeeeee</td>
</tr>
</table>
</div>
вот код
var table_temp = document.getElementById('block_data').getElementsByTagName('table')[0];
var i=0;
for (; i < table_temp.rows.length; i++)
{
if (table_temp.rows[i].innerHTML.indexOf('id="now"') == -1) table_temp.rows[i].style.color = 'grey'
else
{
table_temp.rows[i].style.color = 'green';
break;
}
}
table_temp.style.margin = -i*27 + 'px 0px 0px 0px ';
var temp_url = document.getElementById('block_data').innerHTML;
API.putInnerHTML = temp_url;
Вот тут появились первые грабли: обработанную таблицу я вставлю к себе во фрэйм, и хочу что бы "now" было на начало фрэйма, поэтому я margin сдвигаю таблицу в верх на "i" строк, но фрейм небольшой и если строки в таблице длинные то начинается перенос строк, ячейка становится больше одной строки и я не могу попасть точно на начало фрейма. Вообще возможно это сделать? Вторые грабли, на странице есть такой код:
<table cellpadding="3" cellspacing="0" width="100%">
<tr>
<td class="th">
<a href="#" onclick="xajax_xgetProg('126','0','1')" title>Пн</a></td>
<td class="th">
<a href="#" onclick="xajax_xgetProg('126','0','2')" title>Вт</a></td>
<td class="th">
<a href="#" onclick="xajax_xgetProg('126','0','3')" title>Ср</a></td>
</tr>
</table>
как мне сымитировать нажатие в браузере или получить новый адрес для станицы, как будто я кликнул ссылку, а это возможно??? Заранее спасибо за помощь!!! |
Цитата:
(эту команду выполнить во фрейме) document.location.hash='Letter-Start' в Качестве якоря может выступить id элемента обрамляющего строку или слово к примеру: <span id=Letter-Start>Тут далее строка |
Цитата:
|
Цитата:
table_temp.rows[i].span= 'Letter-Start'; //добавляю якорь а вставку таблицы во фрейм с якорем делаю так:
API.document.frames.my_frames.putInnerHTML = document.getElementById('block_data').InnerHTML.document.location.hash='Letter-Start'
Цитата:
вот грубо говоря адрес страницы http://demo_str.ru/?c=1 я делаю у себя .....putInnerHTML = 'http://demo_str.ru/?c=1 '; ну и там через секунду вся страница у меня и совсеми теми кликами что я приводил вот заголовок это страницы:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Demo</title>
<meta http-equiv="Cache-Control" content="must-revalidate">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Cache-Control" content="max-age=0">
<meta http-equiv="Prizma" content="no-cache">
<meta http-equiv="Expires" content="0">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript">
var xajaxRequestUri="ajax.php";
var xajaxDebug=false;
var xajaxStatusMessages=true;
var xajaxWaitCursor=true;
var xajaxDefinedGet=0;
var xajaxDefinedPost=1;
var xajaxLoaded=false;
function xajax_xgetProg(){return xajax.call("xgetProg", arguments, 1);}
function xajax_xgetNow(){return xajax.call("xgetNow", arguments, 1);}
</script>
<script type="text/javascript" src="Demo_files/xajax.js"></script>
<script type="text/javascript">
window.setTimeout(function () { if (!xajaxLoaded) { alert('Error: the xajax Javascript file could not be included. Perhaps the URL is incorrect?\nURL: /js/xajax.js'); } }, 6000);
</script>
</head>
..... и т.д.
насколько я тут вычитал это библиотека Аякс и мне надо так URL сделать что бы я через putInnerHTML получил уже другие данные, ну или как-то дать команду уже загруженой странице... |
Rik,
Если вам нужно вывести на начало таблицы - просто к тегу таблицы добавьте к ней любое ID <table id=MyId и его и пропишите в document.location.hash='MyId' |
Цитата:
|
Цитата:
Цитата:
API.putInnerHTML = 'http://demo_str.ru/?c=1'; //получаю всю страницу в свой фрейм
var table_temp = API.document.getElementById('block_data').getElementsByTagName('table')[0]; //получаю указатель на объект "таблица", но могу достучатся до любого объекта
.......// обработка таблицы
API.putInnerHTML = ' ';// типа очищаю фрейм
var temp_url = document.getElementById('block_data').innerHTML; //получаю блок с таблицей
API.putInnerHTML = temp_url; //заливаю на фрейм правленую таблицу
API.getElementById('my_frames').style.display = 'block'; //ну тут делаю видимым мой фрейм.
как то так.... |
Цитата:
проделываете операцию по скроллингу к краю таблицы и затем можно делать и програмный клик по элементу Для удобства работы из ява скрипт - у ссылок прописать id
<table cellpadding="3" cellspacing="0" width="100%">
<tr>
<td class="th">
<a id="Link1" href="#" onclick="xajax_xgetProg('126','0','1')" title>Пн</a></td>
<td class="th">
<a id="Link2" href="#" onclick="xajax_xgetProg('126','0','2')" title>Вт</a></td>
<td class="th">
<a id="Link3" href="#" onclick="xajax_xgetProg('126','0','3')" title>Ср</a></td>
</tr>
</table>
Cам вызов document.getElementById('Link1').click() |
Цитата:
пишет ошибка "document.getElementById("my_frames").location is undefined" видать я накосячил, фрэйм мой объявлен как <div id="my_frames"> соответсвенно я получаю указатель на объект HTMLDivElement, а у него нет свойства location. Это свойство есть у объектов HTMLDocument, вот засада... по ходу проблема усложняется. |
Цитата:
Фокус в том что сайт мне формирует страницу как есть, без всяких id="Link1", т.е. я не могу получить Id строки значит и click() тоже не могу. Не знаю может бредово звучит, я нельзя как нибудь URL сформировать с этим кликом??? |
| Часовой пояс GMT +3, время: 03:58. |