Здравствуйте, Trup, Вы писали:
T>Как можно через событие OnClick в обработчике самой таблицы получить требуемый результат?
Запускаешь после загрузки на выполнение скрипт, который обойдет все дочерние элементы таблицы и если это TD, то вешаешь ему обработчик события onClick. Объем будет меньше.
<table id="demo_table">
<tr>
<td>1</td>
{очень много строк и столбцов}
<td>1</td>
</tr>
</table>
<script>
function onTDClick(){
alert("I'm here");
}
var _table = document.getElementById('demo_table');
for (i=0; i < _table.rows.length; i++) {
for (j=0; j < _table.rows(i).cells.length; j++) {
_table.rows(i).cells(j).onclick = onTDClick;
}
}
</script>
Здравствуйте, Сэма, Вы писали:
С>Здравствуйте, Trup, Вы писали:
T>>Как можно через событие OnClick в обработчике самой таблицы получить требуемый результат?
С>Запускаешь после загрузки на выполнение скрипт, который обойдет все дочерние элементы таблицы и если это TD, то вешаешь ему обработчик события onClick. Объем будет меньше.
С>
С> <table id="demo_table">
С> <tr>
С> <td>1</td>
С> {очень много строк и столбцов}
С> <td>1</td>
С> </tr>
С> </table>
С> <script>
С> function onTDClick(){
С> alert("I'm here");
С> }
С> var _table = document.getElementById('demo_table');
С> for (i=0; i < _table.rows.length; i++) {
С> for (j=0; j < _table.rows(i).cells.length; j++) {
С> _table.rows(i).cells(j).onclick = onTDClick;
С> }
С> }
С> </script>
С>
Может тогда подскажите как узнать какая ИМЕННО была нажата ячейка и ЧТО в ней содержится
мой код нехочет пахать
function TablClick(i, j) {
alert(i);
alert(j);
}
var _table = document.getElementById('MainTable');
for (i=0; i < _table.rows.length; i++) {
for (j=0; j < _table.rows(i).cells.length; j++) {
_table.rows(i).cells(j).onclick = TablClick(i, j);
}
}
1) В определении события таким образом передается только имя функции без скобок и параметров;
2) Для того, чтобы определить в каком элементе произошло событие используй window.event.srcElement
3) А на самом деле, вызов event с параметрами надо делать так:
function TablClick(i, j) {
alert(i);
alert(j);
}
var _table = document.getElementById('MainTable');
for (i=0; i < _table.rows.length; i++) {
for (j=0; j < _table.rows(i).cells.length; j++) {
_table.rows(i).cells(j).onclick = function (event) {TablClick(i, j);}
}
}
Здравствуйте, Сэма, Вы писали:
С>Здравствуйте, Trup, Вы писали:
С>1) В определении события таким образом передается только имя функции без скобок и параметров; С>2) Для того, чтобы определить в каком элементе произошло событие используй window.event.srcElement С>3) А на самом деле, вызов event с параметрами надо делать так: С>
Здравствуйте, Trup, Вы писали:
T>Вобщем есть таблица с большим числом ячеек. T>Нужно узнать на какой ячейче пользователь нажал и что в этой ячейке содержится (текст какойто).
T>Ставить в каждую ячейку обработчик события OnClick не рационально, потому как обьем страницы вырастет очень сильно.
T>Как можно через событие OnClick в обработчике самой таблицы получить требуемый результат?
T>Или есть какойто другой способ?
T>Спасибо за ответы.
Здравствуйте, qwertyytrewq, Вы писали:
Q>Здравствуйте, Trup, Вы писали:
T>>Вобщем есть таблица с большим числом ячеек. T>>Нужно узнать на какой ячейче пользователь нажал и что в этой ячейке содержится (текст какойто).
T>>Ставить в каждую ячейку обработчик события OnClick не рационально, потому как обьем страницы вырастет очень сильно.
T>>Как можно через событие OnClick в обработчике самой таблицы получить требуемый результат?
T>>Или есть какойто другой способ?
T>>Спасибо за ответы.
Q>простой пример:
Q><script> Q>function clickCell() { Q> alert(event.srcElement.innerText); Q>} Q></script> Q>... Q><table onclick="clickCell();"> Q>... Q></table>
В данном случае все работает, а как бы узнать хотябы на какой колонке был произведен клик в таблице?
Здравствуйте, Trup, Вы писали:
T>В данном случае все работает, а как бы узнать хотябы на какой колонке был произведен клик в таблице?
Как в моем случае, так и в данном ключевое слово event.srcElement.
Присвой ячейке удобоваримый и легкий для парсинга ID, например "r1c5", а дальше event.srcElement.id подскажет тебе это значение
Trup wrote:
> Как можно через событие OnClick в обработчике самой таблицы получить > требуемый результат?
> Или есть какойто другой способ?
По моим наблюдениям, обычный HTML рисуется быстрее, чем "облегчённый" с добавленными яваскриптом функциями (по крайней
мере в IE). Так что не парься, делай onclick="click(10)", если так волнует объём, то лучше к веб-серверу прикрутить
zip-компрессию трафика.
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, Trup, Вы писали:
Q>>простой пример:
Q>><script> Q>>function clickCell() { Q>> alert(event.srcElement.innerText); Q>>} Q>></script> Q>>... Q>><table onclick="clickCell();"> Q>>... Q>></table>
T>В данном случае все работает, а как бы узнать хотябы на какой колонке был произведен клик в таблице?
Здравствуйте, i-ka, Вы писали:
IK>Здравствуйте, Trup, Вы писали:
Q>>>простой пример:
Q>>><script> Q>>>function clickCell() { Q>>> alert(event.srcElement.innerText); Q>>>} Q>>></script> Q>>>... Q>>><table onclick="clickCell();"> Q>>>... Q>>></table>
T>>В данном случае все работает, а как бы узнать хотябы на какой колонке был произведен клик в таблице?
IK>
Trup wrote:
> Но, если использовать код написанный выше, каждый раз когда жмешь на > таблицу выдаются одни и теже числа (максимальное i и j).
Да, это так работают замыкания в JS, для переменных надо создавать новую функцию, что-то типа:
function makeOnClick(i,j) {
return function(){alert(i+', '+j)}
}
... onclick=makeOnClick(i,j)
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Trup wrote:
> IK> alert("Column: " + event.srcElement.cellIndex); > IK> alert("Row: " + event.srcElement.parentNode.rowIndex); > Спасибо все работает
Считаю своим долгом предупредить, что это нестандартно и работает только под IE.
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, kan, Вы писали:
kan>Trup wrote:
>> IK> alert("Column: " + event.srcElement.cellIndex); >> IK> alert("Row: " + event.srcElement.parentNode.rowIndex); >> Спасибо все работает kan>Считаю своим долгом предупредить, что это нестандартно и работает только под IE.