Javascript.RU

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

Видимость элемента getElementById
Есть табличка выводимая при загрузке страницы с данными из БД
Код:
<div id="firstresult">
            <table id="tableID" class="table table-condensed table-nonfluid">
            <?php
            while($row = mysql_fetch_array($res))
            {
                echo '<tr class="alt">
                <td>'.$row['name'].'</td>
                <td>'.$row['username'].'</td>
              </tr>';
            }
            ?>
            </table>
</div>
Есть функция которая отслеживает нажатия на строки таблицы, и дает значение первой ячейки строки:
window.onload = function(){
    var table = document.getElementById("table1");
    if (table != null) {
        for (var i = 0; i < table.rows.length; i++) {
            table.rows[i].onclick = function () {
                 alert(this.cells[0].innerHTML);
            };
        }
    }


Есть Ajax который который выдает новую отсортированную таблицу, которую генерирует другой php и вставляет в <div id="firstresult">
Код таблицы как и изначальный.
Но если для изначальной таблицы onclick события работают, то для обновленной таблицы переданной из другого php файла, уже нет. У таблиц стоят одинаковые id.
Как тут нужно делать?
Ответить с цитированием
  #2 (permalink)  
Старый 07.08.2014, 16:30
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

присваивайте onclick при генерации новой таблицы.
Ответить с цитированием
  #3 (permalink)  
Старый 07.08.2014, 17:24
Новичок на форуме
Отправить личное сообщение для lavds Посмотреть профиль Найти все сообщения от lavds
 
Регистрация: 07.08.2014
Сообщений: 6

Сообщение от Viral Посмотреть сообщение
присваивайте onclick при генерации новой таблицы.
к сожалению не могу понять, что нужно делать.
не могли бы вы разъяснить мои последующие действия
Ответить с цитированием
  #4 (permalink)  
Старый 07.08.2014, 17:27
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

Сообщение от lavds Посмотреть сообщение
Есть Ajax который который выдает новую отсортированную таблицу, которую генерирует другой php и вставляет в <div id="firstresult">
Код таблицы как и изначальный.
При изначальной загрузке страницы ваша функция вешает onclick на уже имеющиеся на странице строки таблицы.
Чтобы все работало надо запустить ту же функцию, чтобы она повесила onclick на новые созданные строки этой таблицы, на которых его еще нет.
Ответить с цитированием
  #5 (permalink)  
Старый 07.08.2014, 17:36
Новичок на форуме
Отправить личное сообщение для lavds Посмотреть профиль Найти все сообщения от lavds
 
Регистрация: 07.08.2014
Сообщений: 6

Сообщение от Viral Посмотреть сообщение
При изначальной загрузке страницы ваша функция вешает onclick на уже имеющиеся на странице строки таблицы.
Чтобы все работало надо запустить ту же функцию, чтобы она повесила onclick на новые созданные строки этой таблицы, на которых его еще нет.
этот момент понятен

Как мне повесить эту функцию на новый элемент, увы не знаю

Последний раз редактировалось lavds, 07.08.2014 в 17:38.
Ответить с цитированием
  #6 (permalink)  
Старый 07.08.2014, 17:41
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

Ну.. вероятно, у вас есть JS функция, которая кидает элементы, которые вернул ajax запрос, в таблицу. Не видя кода трудно сказать, но если грубо, то после строчки, которая вставляет новые элементы в таблицу, вероятно надо вставить
var table = document.getElementById("table1");
    if (table != null) {
        for (var i = 0; i < table.rows.length; i++) {
            table.rows[i].onclick = function () {
                 alert(this.cells[0].innerHTML);
            };
        }

Последний раз редактировалось Viral, 07.08.2014 в 17:46.
Ответить с цитированием
  #7 (permalink)  
Старый 07.08.2014, 17:43
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

lavds,
document.querySelector("#firstresult").addEventListener("click", function (event) {

   if (event.target.tagName == "TD") {
      //клик на ячейку
   }

}, true);


Код требует доработки для кроссбраузерности и содержимого таблицы, но подход должен быть ясен
1 обработчик на все строки и не важно новые они или старые.
Ответить с цитированием
  #8 (permalink)  
Старый 07.08.2014, 17:50
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

<div id="firstresult">
   <table>
      <tr><td>1</td><td>2</td></tr>
   </table>
</div>
<button onclick="document.querySelector('#firstresult').innerHTML = '<table><tr><td>3</td><td>4</td></tr></table>'; return false;">
Обновить таблицу!
</button>
<script>
document.querySelector('#firstresult').addEventListener("click", function (event) {

   if (event.target.tagName == "TD") {
      alert(event.target.innerHTML);
   }

}, true);
</script>
Ответить с цитированием
  #9 (permalink)  
Старый 07.08.2014, 18:04
Новичок на форуме
Отправить личное сообщение для lavds Посмотреть профиль Найти все сообщения от lavds
 
Регистрация: 07.08.2014
Сообщений: 6

Сообщение от tsigel Посмотреть сообщение
lavds,
document.querySelector("#firstresult").addEventListener("click", function (event) {

   if (event.target.tagName == "TD") {
      //клик на ячейку
   }

}, true);


Код требует доработки для кроссбраузерности и содержимого таблицы, но подход должен быть ясен
1 обработчик на все строки и не важно новые они или старые.
а как получить родительский tr для этого td.
Мне нужен текст первой ячейки в строке, при нажатии в любую ячейку строки
Ответить с цитированием
  #10 (permalink)  
Старый 07.08.2014, 18:06
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

event.target.parentNode

Почитайте для понимания того как лазить по элементам
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменить класс родительского элемента STyLe Общие вопросы Javascript 1 29.05.2014 20:21
Почему можно использовать id элемента без использования getElementById? grifangel Общие вопросы Javascript 3 08.01.2014 22:20
Пропадает видимость подгружаемого элемента NaTaran Events/DOM/Window 2 02.11.2013 18:31
Замена DOM элемента другим элементом MaxXxaM Events/DOM/Window 5 04.05.2013 01:24
как обратиться к items элемента из другого элемента и изменить его? Krepkii ExtJS 2 12.02.2013 14:53