Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.07.2010, 04:53
Аватар для HukpoFuJl
Новичок на форуме
Отправить личное сообщение для HukpoFuJl Посмотреть профиль Найти все сообщения от HukpoFuJl
 
Регистрация: 22.07.2010
Сообщений: 5

Клик по дочернему <a> элементу div'a
Здравствуйте... Вот написал кодик такой:
<script>
     var divs = document.getElementsByTagName("DIV");
     for (var i = 0; i < divs.length; i++){
         if(divs[i].id.indexOf('pa') == 0){
             var elems = divs[i].getElementsByTagName('*');
             for(var i=0; i<elems.length; i++){
                 if(elems[i].tagName.indexOf('a') == 0){
                      elems[i].parentNode.removeChild(elems[i]);
                 }
             }
         }
     }
 </script>

По сути должен работать так:
Находим все DIV элементы в массив,
Находим DIV, у которого ID начинается на "pa",
Получаем все дочерние элементы,
Получаем первый попавшийся элемент A,
Удаляем его.
(мне по сути удалять его не нужно, но для наглядности, чтобы быть уверенным, что его нашло написал пока так.)

Вроде всё правильно... вот только не работает... Вот кусок HTML'a который должен обрабатываться:
<div id="paKVyWMWe">
     <table border="0" cellspacing="0" cellpadding="0" class="caKVyWMWe" id="aKVyWMWe" style="z-index:10000;width:262px">
          <tbody>
               <tr>
                    <td valign="top" width="12">
                         <a href="javascript://" onclick="faKVyWMWe('none');return false;" title="Закрыть">
                              <img alt="" src="урл картинки" style="стиль">
                         </a>
                    </td>
                    <td width="250">
                         <script type="text/javascript">
                              document.write('<IFRAME (фрейм)></IFRAME>');
                         </script>
                         <iframe (фрейм)>
                         </iframe>
                    </td>
               </tr>
          </tbody>
     </table>
</div>


Подскажите новичку - где я ошибся?
Ответить с цитированием
  #2 (permalink)  
Старый 22.07.2010, 06:31
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

Внутренний и внешний цикл используют переменную с одним и тем же названием для итератора.

Да и вообще можно было бы обойтись одним циклом:

var divs = document.getElementsByTagName('DIV');
for ( var i = 0; i < divs.length; i++ ) {
	if ( divs[i].id.indexOf('pa') == 0 ) {
		var e = divs[i].getElementsByTagName('a')[0];
		e.parentNode.removeChild(e);
	}
}


+ добавить break, если ссылка всегда только одна, чтобы не было лишних итераций после того, как ссылка уже найдена.

Последний раз редактировалось exec, 22.07.2010 в 06:35.
Ответить с цитированием
  #3 (permalink)  
Старый 22.07.2010, 08:53
Аватар для HukpoFuJl
Новичок на форуме
Отправить личное сообщение для HukpoFuJl Посмотреть профиль Найти все сообщения от HukpoFuJl
 
Регистрация: 22.07.2010
Сообщений: 5

О, отлично, работает, спасибо...
Сделал так:
<script>
var divs = document.getElementsByTagName('DIV');
    for ( var i = 0; i < divs.length; i++ ) {
    if ( divs[i].id.indexOf('pa') == 0 ) {
        var e = divs[i].getElementsByTagName('a')[0];
        e.click();
        break;
    }
}
</script>

Результаты такие:
Opera и IE - клик сработал
FireFox и Chrome - не сработал

Есть какие-либо альтернативы "click()", чтобы работали во всех браузерах?

ЗЫ: для тех кто наверняка подумал, что я делаю всплывающую в новом окне рекламу, или ещё что-нить - вы неправы!
Я наоборот избавляюсь на своём сайте от рекламного баннера, навязанного хостером.
Ответить с цитированием
  #4 (permalink)  
Старый 22.07.2010, 09:11
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

Используйте fireEvent/dispatchEvent.
Ответить с цитированием
  #5 (permalink)  
Старый 22.07.2010, 12:10
Аватар для HukpoFuJl
Новичок на форуме
Отправить личное сообщение для HukpoFuJl Посмотреть профиль Найти все сообщения от HukpoFuJl
 
Регистрация: 22.07.2010
Сообщений: 5

Блин, что-то я ковырялся, гуглил, вроде что-то понял, но не особо... Просто я программист немного другого напрвления и с яваскриптом сталкиваюсь впервые, может поможете мне мои мысли в код преобразовать (если я конечно правильно всё себе представляю )
<a href="javascript://" onclick="faKVyWMWe('none');return false;" title="Закрыть">
Как я говорил, по этому элементу нужно вызвать клик... В принципе аналогично можно просто выполнить его onclick функцию... Проблема только в том, что имя функции динамическое и постоянными остаються только первые две буквы "fa"... Приведенный в первом посту код я редактировать не могу - его ставит хостер и я его просто в редакторе не вижу... Всё остальное редактировать я могу...

Предполагаемое решение:
Можно как-нибудь функцию "onclick" с моего "a" объекта получить и приписать например в body:
<body onLoad="вот сюда">
Ответить с цитированием
  #6 (permalink)  
Старый 22.07.2010, 13:09
Аватар для HukpoFuJl
Новичок на форуме
Отправить личное сообщение для HukpoFuJl Посмотреть профиль Найти все сообщения от HukpoFuJl
 
Регистрация: 22.07.2010
Сообщений: 5

Всё, вопрос отзываю =) Сделал проще... Посмотрел, что делает вызываемая мною функция:
function favi8R2(a){try{document.getElementById("pavi8R2").style.display=a;}catch(e){}try{document.getElementById("avi8R2").style.display=a;}catch(e){}}function f2avi8R2(){favi8R2('');}
Отобрал из неё нужное и просто запустил на выполнение при загрузке страницы:
<script>
     var divs = document.getElementsByTagName('DIV');
     for ( var i = 0; i < divs.length; i++ ) {
          if ( divs[i].id.indexOf('pa') == 0 ) {
               var e = document.getElementById(divs[i].id);
               e.style.display='none';
               break;
          }
     }
</script>
Теперь всё работает на всех браузерах, спасибо за помощь exec.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматический клик по <a> во фрейме Mxnr Events/DOM/Window 1 05.04.2010 18:34