Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Определение идентификатора (https://javascript.ru/forum/misc/28377-opredelenie-identifikatora.html)

The special one 17.05.2012 10:53

Определение идентификатора
 
Здравствуйте уважаемые программисты! Помогите решить задачку.
Существуют некие ячейки таблицы со значениями вида:
<td id=слово1>слово1</td>
<td id=слово2>слово2</td>
<td id=слово3>слово3</td>

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

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

Может есть более простецкое решение.

melky 17.05.2012 10:55

Цитата:

Сообщение от The special one
Нормальным человеческим решением этой задачки было бы следующее. Во время клика мышкой по ячейке, перебрать координаты всех ячеек и сравнить с координатами курсора, найти минимальное расстояние.

хм.. почему ячейки, а не координаты курсора? и до куда искать расстояние?

The special one 17.05.2012 11:18

Цитата:

Сообщение от melky (Сообщение 174903)
хм.. почему ячейки, а не координаты курсора? и до куда искать расстояние?

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

bes 17.05.2012 11:37

<style>
  td {border: solid 1px; cursor: pointer}
</style>

<table id="myTable">
<tr>
<td id="1">first
<td id="2">second
<td id="3">third
<tr>
</table>

<script>
myTable.onclick = function (e) {
  var e = e || window.event;
  var target = e.target || e.srcElement;

  target.innerHTML = target.id
}
</script>

melky 17.05.2012 11:48

Цитата:

Сообщение от The special one (Сообщение 174906)
Я плохо знаю js (практически не знаю), но я предполагаю, что ячейки таблицы со значениями хранятся в памяти в виде массива данных. Если сравнивать расстояние между координатами курсора и координатами всех ячеек, то оно будет минимальным для той ячейки, на которой мы кликаем. Так можно определить индекс массива и записать в переменную значение ячейки, которое хранится в массиве по этому индексу. Но это вариант меня не устраивает.

так надо расстояние до куда-то искать, или же найти ту ячейку, по которой кликнули?

Aetae 17.05.2012 12:04

Цитата:

Сообщение от bes (Сообщение 174911)
<style>
  td {border: solid 1px; cursor: pointer}
</style>

<table id="myTable">
<tr>
<td id="1">first
<td id="2">second
<td id="3">third
<tr>
</table>

<script>
myTable.onclick = function (e) {
  var e = e || window.event;
  var target = e.target || e.srcElement;

  target.innerHTML = target.id
}
</script>

Id не нужен.:nono:
<style>
  td {border: solid 1px; cursor: pointer}
</style>

<table id="myTable">
<tr>
<td>first
<td>second
<td>third
<tr>
</table>

<script>
myTable.onclick = function (e) {
  var target = e ? e.target : window.event.srcElement;
  target.innerHTML = target.cellIndex
}
</script>

The special one 17.05.2012 12:24

Цитата:

Сообщение от melky (Сообщение 174915)
так надо расстояние до куда-то искать, или же найти ту ячейку, по которой кликнули?

Вроде уже не надо, люди написали решение.

Спасибо, друзья! Сейчас пойду в магазин, а потом буду разбираться с вашими скриптами.

bes 17.05.2012 12:31

Цитата:

Сообщение от Aetae
Id не нужен

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

The special one 17.05.2012 14:00

Цитата:

Сообщение от bes (Сообщение 174928)
Что точно автору нужно было не совсем понятно

Как это? Я же в первом посте четко изложил что необходимо получить. Нужно мышкой кликнуть на ячейку типа <td>слово№n</td> и в переменную должно записаться значение например
var d = слово№n;
. Сейчас уже стало ясно, что id не нужен.
Я пришел с магазина)), посмотрел эти скрипты, все работает правильно, идея мне ясна, это то, что мне нужно было, еще раз всем спасибо.

The special one 18.05.2012 13:13

Появилась еще одна проблема, это прекрасно работает во всех браузерах кроме фаерфокса. В фаерфоксе вообще никакой реакции на клик мышкой. Как быть?


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