Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   menuitem. Узнать по какому элементу кликнули (https://javascript.ru/forum/dom-window/49087-menuitem-uznat-po-kakomu-ehlementu-kliknuli.html)

Vit 28.07.2014 22:24

menuitem. Узнать по какому элементу кликнули
 
Всем доброго. Есть меню:
<menu type="context" id="cellpopup"> 
   <menuitem label="Set NULL" onclick="SelNULL(this)"></menuitem> 
  </menu>

Это меню определено для каждой ячейки некой таблицы.
В зависимоти от того по какой ячейке я кликну вызвав меню нужно выполнять разные действия.
Вопрос: Как в SelNULL() передать при клике ячейку (или в принципе объект), по которой кликнули?

Rise 28.07.2014 22:47

Vit, где код?

BETEPAH 28.07.2014 23:09

Цитата:

Сообщение от Vit
Как в SelNULL() передать при клике ячейку (или в принципе объект), по которой кликнули?

this, который Вы уже передаете, это и будет ссылка на элемент menuitem, по которому кликнули.

Vit 29.07.2014 10:17

Цитата:

Сообщение от Rise (Сообщение 323168)
Vit, где код?

Какой код?
Цитата:

this, который Вы уже передаете, это и будет ссылка на элемент menuitem, по которому кликнули.
а мне нужно получить элемент страницы над которым было вызвано контекстное меню.

nerv_ 29.07.2014 14:17

Цитата:

Сообщение от Vit
Как в SelNULL() передать при клике ячейку (или в принципе объект), по которой кликнули?

можно ничего не передавать:
event.target

Vit 29.07.2014 14:48

Цитата:

Сообщение от nerv_ (Сообщение 323242)
можно ничего не передавать:
event.target

А можно пример небольшой?
Обычно я event передаю в обработчик, а как не передавать?
Если имеется ввиду такое:
function SetNULL(me){
 alert(window.event.target);
}

то это не срабатывает.
Если же я пишу так:
<menu type="context" id="cellpopup"> 
   <menuitem label="Set NULL" onclick="SetNULL(event.target)"></menuitem> 
  </menu>

То мне в параметр все равно приходит [object HTMLMenuItemElement]

BETEPAH 29.07.2014 14:55

Vit,
Цитата:

Сообщение от Vit
а мне нужно получить элемент страницы над которым было вызвано контекстное меню.

Вам не кажется, что это не совсем то, о чем спрашивалось изначально?
Цитата:

Сообщение от Vit
Как в SelNULL() передать при клике ячейку (или в принципе объект), по которой кликнули?

Тут вижу два варианта:
либо зависимость от верстки (клик по меню - поиск нужного парента - поиск элемента)
либо идентификаторами связывать элемент и меню, которое вызывается.

Vit 29.07.2014 16:52

Ладно, уточню: Каждая клетка таблицы олицетворяет собой поле записи в таблице БД. Я хочу сделать установку поля в NULL. Мне (это для меня) было бы очень удобно делать это в контекстном меню, поэтому задача состоит в том, чтоб функции SetNULL() передать ID записи (хранится в атрибутах TR тега) и имя поля (хранится соответственно в атрибутах TD). Но чтоб передать в процедуру эти данные мне нужно знать по какой именно клетке щелкнули ПКМ, вызвав меню.
Цитата:

клик по меню - поиск нужного парента - поиск элемента
Но тогда как получается что мне в каждую клетку нужно пихать меню.

Rise 29.07.2014 18:01

Vit,
<menu type="context" id="cellpopup">
	<menuitem label="Set NULL" onclick="SelNULL()"></menuitem>
</menu>

<table id="table" border="1">
	<tr>
		<td contextmenu="cellpopup">11111</td>
		<td contextmenu="cellpopup">22222</td>
		<td contextmenu="cellpopup">33333</td>
	<tr>
</table>

<script>
var thisCell;
table.oncontextmenu = function(e) { thisCell = e.target };
function SelNULL() { alert(thisCell.innerHTML) }
</script>

Vit 29.07.2014 22:33

О! Спасибо.
Толчок в нужном направлении получен - задача решена.
Мои благодарности.


Часовой пояс GMT +3, время: 08:18.