Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Получить строка/столбец "кликнутой" ячейки Гугл-таблицы (https://javascript.ru/forum/events/80418-poluchit-stroka-stolbec-kliknutojj-yachejjki-gugl-tablicy.html)

Андрей_Ко 02.06.2020 17:33

убрал строку querySelector() ...ничего не поменялось

laimas 02.06.2020 17:39

Цитата:

Сообщение от Андрей_Ко
где тогда хранится моё название?

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

Вкратце, например, если Prestige, это имя переменной которая ссылается на объект (созданную таблицу), то добавить свой обработчик события, это Prestige.addEventListener("событие", ....

Что такое "Новая таблица" бог и Гугл знает, а мне как-то не охота "освежать" мануал ее. :) У кого свежи "воспоминания" о ней подскажет, если сами не найдете в документации нужного.

PS. Строго говоря и о чем надо было сказать, гугл таблица это в общем то не есть тег table, это несколько сложнее, так что в любом случае без API работать с ней не получится.

Андрей_Ко 02.06.2020 20:53

Нашёл ID таблицы, опять пробую:
function myFunc() {
  function ready() {
  document.querySelector("#1I5PlV06KIWF00Xe83Lmvu-nPa-4-0UzKn5DDdWQIGxM").onclick = (event) => {
  let cell = event.target;
  if (cell.tagName.toLowerCase() != 'td')
    return;
  let i = cell.parentNode.rowIndex;
  let j = cell.cellIndex;

    console.log(i, j);
  }}};

Пусто!!!
Пробую хотя-бы так:
function myFunc1() {
  function ready() {
  "#1I5PlV06KIWF00Xe83Lmvu-nPa-4-0UzKn5DDdWQIGxM".onclick = function() {
    alert('Спасибо');
  };
 }
}

Ни-че-го!
Что любопытно: натыкал в обеих процедурах точек останова, в редакторе нигде не останавливаются!

рони 02.06.2020 21:09

Андрей_Ко,
document.addEventListener("DOMContentLoaded", () => {
  document.querySelector('table').addEventListener("click", (event) => {
  let cell = event.target;
  if (cell.tagName.toLowerCase() != 'td')
    return;
  let i = cell.parentNode.rowIndex;
  let j = cell.cellIndex;

    console.log(i, j);
});
});

laimas 02.06.2020 22:13

рони, а разве в ней таблица используется или я не о той гугл таблице думаю?

рони 02.06.2020 22:17

laimas,
без понятия.

laimas 02.06.2020 22:27

Цитата:

Сообщение от рони
без понятия

О таблице или моих тараканах? :)

рони 02.06.2020 22:46

laimas,
не знаю гугл таблицы совсем.

Андрей_Ко 02.06.2020 23:50

рони, простите, а у Вас этот листинг работает? Или это - просто набросок? Там в двух последних строках какая-то нескладуха со скобками
Вроде, так должно быть с закрывающими скобками:
document.addEventListener("DOMContentLoaded", () => {
document.querySelector('table').addEventListener("click", (event) => {
let cell = event.target;
if (cell.tagName.toLowerCase() != 'td')
return;
let i = cell.parentNode.rowIndex;
let j = cell.cellIndex;
console.log(i, j);
}})

но теперь он ругается на первую строку:"Unexpected identifier"

рони 02.06.2020 23:55

Цитата:

Сообщение от Андрей_Ко
а у Вас этот листинг работает?

жмите по Cell
как там устроено у вас, я не знаю.

<!doctype html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">

    </style>

  <script>
document.addEventListener("DOMContentLoaded", () => {
  document.querySelector('table').addEventListener("click", (event) => {
  let cell = event.target;
  if (cell.tagName.toLowerCase() != 'td')
    return;
  let i = cell.parentNode.rowIndex;
  let j = cell.cellIndex;

    alert([i, j]);
});
});

  </script>

</head>
<body>
 <table width="400" summary="" >
 	<thead>
 		<tr>
 			<th>Title 1</th>
 			<th>Title 2</th>
 			<th>Title 3</th>
 		</tr>
 	</thead>
 	<tbody>
 		<tr>
 			<td>Cell 1.1</td>
 			<td>Cell 1.2</td>
 			<td>Cell 1.3</td>
 		</tr>
 		<tr>
 			<td>Cell 2.1</td>
 			<td>Cell 2.2</td>
 			<td>Cell 2.3</td>
 		</tr>
 	</tbody>
 </table>
</body>
</html>


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