Sign in to follow this  
tt48

Получение id элемента при клике

Recommended Posts

Доброго времени суток.

Задался целью оптимизировать код.

Нашел такую штуку:

window.captureEvents(Event.CLICK);

window.onclick = clicked;

function clicked(e) {}

Вот только она была описана в общем случае, а мне нужно как-то получить хотя бы id кликнутого эелемента..

В моём случае - делаю калькулятор и нужно узнать, по чему кликнул пользователь- если кнопка - послать по её названию обработку.

Заранее спасибо.

Share this post


Link to post
Share on other sites

var targ = (window.event) ? e.srcElement : e.target;

Ну вот так можно вроде бы получить элемент, на который кликнули.

Share this post


Link to post
Share on other sites

Еще неплохо бы сам event кроссбраузерно получить. Всегда делаю так:

function test(e) {
e = e || window.event;
var target = e.target || e.srcElement;
}

// а вот так делать не рекомендую:
window.onclick = test;

// лучше навесить на window слушатель (listener)
function addListener(obj, ev, func) {
if (document.addEventListener) {
obj.addEventListener(ev, func, false);
} else if (document.attachEvent) {
obj.attachEvent('on' + ev, func);
} else {
obj['on' + ev] = func;
}
}

addListener(window, 'click', function(e) {
test(e);
});

Share this post


Link to post
Share on other sites
// а вот так делать не рекомендую:

window.onclick = test;

// лучше навесить на window слушатель (listener)

Не всегда такое прокатит. У всех нормальных браузеров стек событий сделан FIFO, и только МС отличились, и сделали FILO.

Share this post


Link to post
Share on other sites

Ну это я так понимаю плохо только если стописят слушателей на одном объекте висит, а если пара-тройка то нормуль работает. И вообще я ни разу не попадал в ситуацию где у меня были бы с этим делом проблемы.

Не считая навешивания слушателя нескольким объектам в цикле... что-то там у меня было неладно кажись.

Share this post


Link to post
Share on other sites
Ну это я так понимаю плохо только если стописят слушателей на одном объекте висит, а если пара-тройка то нормуль работает. И вообще я ни разу не попадал в ситуацию где у меня были бы с этим делом проблемы.

Не считая навешивания слушателя нескольким объектам в цикле... что-то там у меня было неладно кажись.

FIFO - first in, first out. Первым попал в стек, первым вышел из стека.

FILO - first in, last out. Первым попал, последним вышел.

Проблемы наступают тогда, когда нужно выполнять разные действия поочередно, строго в определенной очередности.

Например, сперва пересортивать строки таблицы и потом уже сделать черезполосицу строк. Если делать наоборот, то результат будет ошибочный.

Share this post


Link to post
Share on other sites
FIFO - first in, first out. Первым попал в стек, первым вышел из стека.

FILO - first in, last out. Первым попал, последним вышел.

Проблемы наступают тогда, когда нужно выполнять разные действия поочередно, строго в определенной очередности.

Например, сперва пересортивать строки таблицы и потом уже сделать черезполосицу строк. Если делать наоборот, то результат будет ошибочный.

Спасибо за развёрнутое решение:-)

Share this post


Link to post
Share on other sites
FIFO - first in, first out. Первым попал в стек, первым вышел из стека.

FILO - first in, last out. Первым попал, последним вышел.

Просто дополнение: первый тип это по сути не стек, а очередь, а вот второй — стек.

Поэтому если нужно писать по-русски, то

FIFO — очередь

FILO (еще вариант LIFO — Last In First Out) — стек.

Share this post


Link to post
Share on other sites
Просто дополнение: первый тип это по сути не стек, а очередь, а вот второй — стек.

Поэтому если нужно писать по-русски, то

FIFO — очередь

FILO (еще вариант LIFO — Last In First Out) — стек.

еще более по-русски, LIFO - стопка.

Share this post


Link to post
Share on other sites
Просто дополнение: первый тип это по сути не стек, а очередь, а вот второй — стек.

Поэтому если нужно писать по-русски, то

FIFO — очередь

FILO (еще вариант LIFO — Last In First Out) — стек.

На его уровне не столь принципиально :D

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Member Statistics

    46,530
    Total Members
    3,128
    Most Online
    6eJlbIu
    Newest Member
    6eJlbIu
    Joined
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Спрашивают сейчас

  • Пишут сейчас

    • Ну, как я понял, это для динамичных сайтов, и все товары должны быть в какой то базе данных?
      А как через javascript обратиться к базе данных?
       
    • начнем с того, что данные ваших товарных позиций должны быть структурированы, например если они хранятся в SQL, то в вашем случае это может выглядеть:

      table
      date_start | date_stop | type | color | capacity | carrying

      одна строка - одна позиция
      SQL запрос к данной таблице вернет массив объектов с данными свойствами из таблицы (table)
      Без каких либо условий - это будут все записи. Если вам нужен фильтр по какой-либо колонке/колонкам или сортировка, то для этого в SQL запрос добавляются условия которые передаются в скрипт через POST или GET запрос с помощью формы
      например:

      <form method="post">
      <input name="date_start">
      <input name="date_stop">
      ....
      type и color логично сделать через select чтобы выбирать из существующих возможных вариантов
      capacity и carrying возможно потребуется возможность указания диапазона (от и до)
      ....
      </form>

      все выше перечисленное только в рамках возможных вариантов которых можно еще придумать
      если мы например укажем date_start то в скрипте используя $_POST['date_start'] можно будет добавить условие в SQL запрос
      ... WHERE `table`.`date_start` = $_POST['date_start']
      в этом случае на странице вывода позиций будут присутствовать только с Дата начала аренды указанной в фильтре

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

      Вот например, я сверстал карточки товаров, и там есть сортировка, но понятия не имею как его делать.

      Там есть формы: 
      - Дата начала аренды
      - Дата конца аренды
      - Тип транспорта
      - Цвет
      - Вместимость
      - Грузоподъемность Буду очень благодарен тому кто распишет как все это работает, а то понять не могу, что-то для меня это совсем темное и туманное.... 
  • Popular Contributors