Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.06.2012, 12:31
Rik Rik вне форума
Интересующийся
Отправить личное сообщение для Rik Посмотреть профиль Найти все сообщения от Rik
 
Регистрация: 06.06.2012
Сообщений: 24

Управление таблицей
Доброго дня всем!
Програмлю на Java для удовольствия так что отношу себя к Новичкам.
Отличный форум, покурив его много чему научился!!!
Есть такая проблемка, нужно скажем так распарсить страничку, на этой странице я выкусываю только таблицу. Что я сделал: загоняю адрес страницы в браузер, получаю указатель на таблицу, обрабатываю её, может коряво с точки зрения проф. но работает.
вот табличка
<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>

как мне сымитировать нажатие в браузере или получить новый адрес для станицы, как будто я кликнул ссылку, а это возможно???
Заранее спасибо за помощь!!!
Ответить с цитированием
  #2 (permalink)  
Старый 07.06.2012, 12:41
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Rik
Вот тут появились первые грабли: обработанную таблицу я вставлю к себе во фрэйм, и хочу что бы "now" было на начало фрэйма, поэтому я margin сдвигаю таблицу в верх на "i" строк, но фрейм небольшой и если строки в таблице длинные то начинается перенос строк, ячейка становится больше одной строки и я не могу попасть точно на начало фрейма. Вообще возможно это сделать?
Поставьте скрытый якорь на нужную строку таблицы и добавьте его к адресу фрейма после вставки таблы
(эту команду выполнить во фрейме)
document.location.hash='Letter-Start'
в Качестве якоря может выступить id элемента обрамляющего строку или слово
к примеру: <span id=Letter-Start>Тут далее строка
Ответить с цитированием
  #3 (permalink)  
Старый 07.06.2012, 12:45
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Rik
как мне сымитировать нажатие в браузере или получить новый адрес для станицы, как будто я кликнул ссылку, а это возможно???
Заранее спасибо за помощь!!!
Тут зависит от того где расположен код для клика - во фрейме или на главной, На главной процедура осложнена - нужно дождаться события загрузки фрейма и вставки таблы
Ответить с цитированием
  #4 (permalink)  
Старый 07.06.2012, 13:41
Rik Rik вне форума
Интересующийся
Отправить личное сообщение для Rik Посмотреть профиль Найти все сообщения от Rik
 
Регистрация: 06.06.2012
Сообщений: 24

Сообщение от Deff Посмотреть сообщение
Поставьте скрытый якорь на нужную строку таблицы и добавьте его к адресу фрейма после вставки таблы
(эту команду выполнить во фрейме)
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 получил уже другие данные, ну или как-то дать команду уже загруженой странице...
Ответить с цитированием
  #5 (permalink)  
Старый 07.06.2012, 14:34
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Rik,
Если вам нужно вывести на начало таблицы - просто к тегу таблицы
добавьте к ней любое ID
<table id=MyId
и его и пропишите в
document.location.hash='MyId'
Ответить с цитированием
  #6 (permalink)  
Старый 07.06.2012, 14:37
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Rik
Тут зависит от того где расположен код для клика - во фрейме или на главной
Куда вы хотите вставить полученные/обработанные данные таблицы ?
Ответить с цитированием
  #7 (permalink)  
Старый 07.06.2012, 15:10
Rik Rik вне форума
Интересующийся
Отправить личное сообщение для Rik Посмотреть профиль Найти все сообщения от Rik
 
Регистрация: 06.06.2012
Сообщений: 24

Сообщение от Deff Посмотреть сообщение
Rik,
Если вам нужно вывести на начало таблицы - просто к тегу таблицы
добавьте к ней любое ID
<table id=MyId
и его и пропишите в
document.location.hash='MyId'
ага понял сейчас попробую, а вот у меня есть id="now" его можно использовать для hash?

Цитата:
Куда вы хотите вставить полученные/обработанные данные таблицы ?
фактически это выглядит так:

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'; //ну тут делаю видимым мой фрейм.
как то так....
Ответить с цитированием
  #8 (permalink)  
Старый 07.06.2012, 15:45
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Rik
//ну тут делаю видимым мой фрейм
Ну вот перед видимостью

проделываете операцию по скроллингу к краю таблицы
и затем можно делать и програмный клик по элементу

Для удобства работы из ява скрипт - у ссылок прописать 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()
Ответить с цитированием
  #9 (permalink)  
Старый 07.06.2012, 16:25
Rik Rik вне форума
Интересующийся
Отправить личное сообщение для Rik Посмотреть профиль Найти все сообщения от Rik
 
Регистрация: 06.06.2012
Сообщений: 24

Сообщение от Deff
Ну вот перед видимостью
не работает...
пишет ошибка "document.getElementById("my_frames").location is undefined"
видать я накосячил, фрэйм мой объявлен как <div id="my_frames"> соответсвенно я получаю указатель на объект HTMLDivElement, а у него нет свойства location.
Это свойство есть у объектов HTMLDocument, вот засада... по ходу проблема усложняется.
Ответить с цитированием
  #10 (permalink)  
Старый 07.06.2012, 17:30
Rik Rik вне форума
Интересующийся
Отправить личное сообщение для Rik Посмотреть профиль Найти все сообщения от Rik
 
Регистрация: 06.06.2012
Сообщений: 24

Сообщение от Deff Посмотреть сообщение
Cам вызов

document.getElementById('Link1').click()
и это не заработало....
Фокус в том что сайт мне формирует страницу как есть, без всяких id="Link1", т.е. я не могу получить Id строки значит и click() тоже не могу.

Не знаю может бредово звучит, я нельзя как нибудь URL сформировать с этим кликом???
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление CSS через JS (Sandr) Общие вопросы Javascript 3 16.03.2012 11:22
Пространство между границей ячейки и вложенной таблицей. abstract (X)HTML/CSS 3 01.04.2011 15:47
Управление checkboxами kolomiets.web-art Общие вопросы Javascript 1 29.10.2010 18:47
Анимация и управление строчкой текста INI jQuery 2 31.08.2010 08:22
управление accordion menu SuperPuperLesha Общие вопросы Javascript 5 29.08.2009 13:11