Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: rowIndex и cellIndex
 
 автор: Зосим   (25.02.2008 в 23:52)   письмо автору
 
 

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

   
 
 автор: CNTv2.0   (26.02.2008 в 00:33)   письмо автору
 
   для: Зосим   (25.02.2008 в 23:52)
 

<td onclick="with (this) alert ('cellIndex = ' + cellIndex + '\nrowIndex = ' + parentNode.rowIndex)">

   
 
 автор: Зосим   (26.02.2008 в 19:49)   письмо автору
 
   для: CNTv2.0   (26.02.2008 в 00:33)
 

Честное слово не получается. Вот переписал таблицу таким образом, но не работает почему-то((

<SCRIPT language="Javascript">
function gentrtd(m,n){var trtd=" ";
for(i=0; i<m;i++){
    trtd+="<TR>";
for(j=0; j<n;j++){    
    trtd+="<TD onclick=&quotwith (this) alert ('cellIndex = ' + cellIndex + '\nrowIndex = ' + parentNode.rowIndex)&quot>&nbsp</TD>";
}
trtd+="</TR>";
}
return trtd;
}
</SCRIPT>
<CENTER>
<TABLE border=3 bgcolor="lightgreen" width=100% height=100% id=tab  >
<SCRIPT language="Javascript">
document.write(gentrtd(10,15));
</SCRIPT>
</TABLE>
</CENTER>

В чём проблема???
И ещё вопрос по таблицам, почему в IE таблица создается во весь фрейм, а в Опере только по ширине, а высота во весь фрейм не делается. Где можно узнать, какие параметры в каких браузерах работают, а в каких нет или отображаются по другому.

   
 
 автор: CNTv2.0   (27.02.2008 в 01:03)   письмо автору
 
   для: Зосим   (26.02.2008 в 19:49)
 

1. Проблема в вашей неряшливости.
Писать код надо вдумчиво. Так, чтобы понятно было хотя бы самому себе.
Да и правила необходимо соблюдать. Например, значения всех HTML-атрибутов должны быть закавычены
<script>
function gentrtd (m, n)
{
for (var t = new Array (), i = k = 0; i < m; i++)
   {
   t [k] = '<tr>';
   for (var j = 0; j < n; j++) t [k] += '<td onclick="fClick (this)">&nbsp;</td>';
   t [k++] += '</tr>';
   }
return t.join ('\n');
}

function fClick (x)
{
with (x) alert ('cellIndex = ' + cellIndex + '\nrowIndex = ' + parentNode.rowIndex);
}
</script>

<center>
<table border="1" bgcolor="lightgreen" width="100%" height="100%" id="tab" cellspacing="10">
<script>
document.write (gentrtd (10, 15));
</script>
</table>
</center> 


2. В Эксплорере по умолчанию свойство высота тега BODY равна высоте окна. В прочих браузерах - не так, высота тега <BODY> равна высоте фактического содержимого.
Поэтому рекомендую ВСЕГДА, в любых страницах прописывать:
<style>
html, body {width: 100%; height: 100%}
</style>
Эксплорер это проигнорирует, а вот прочие браузеры после этой строки отсчитывать проценты начнут от реального размера окна (как это и делает Эксплорер по умолчанию).

   
 
 автор: Зосим   (27.02.2008 в 02:06)   письмо автору
 
   для: CNTv2.0   (27.02.2008 в 01:03)
 

Точно ведь запутался в кавычках)
Ещё пару вопросиков можно, что означает parentNode? Как работает with(this) и как собственно с ним обращаться.

function fClick (x) { 
var z= with(x).cellIndex;


Например, так не работает.
В книжке, которая у меня есть по HTML, with упоминается один раз когда перечисляются зарезервированные слова(( Объясните пожалуйста.

   
 
 автор: CNTv2.0   (27.02.2008 в 05:04)   письмо автору
 
   для: Зосим   (27.02.2008 в 02:06)
 

1. Ко всякому объекту документа можно обращаться по разному.
Самое простое - по его id
Например, для кода
<div><span id="mSPAN"><b>1</b><i>2</i>3</span></div>
к тегу <SPAN> обратиться просто - document.getElementById ('mSPAN')

А как в этом же коде обратиться к тегу <DIV> или к тегам <B> или <I> - у них ведь id не прописан?
Для этого и существуют разные свойства, связанные с иерархией тегов на странице.
Оносительно любого объекта существуют:
родитель объекта - parentNode,
первый ребенок объекта - firstChild,
следующий за объектом ребенок родителя объекта - nextSibling,
... есть и ещё много разных свойств...

Вчитайтесь в код и запустите его. И, надеюсь, всё станет ясно:
<div><span id="mSPAN"><b>1</b><i>2</i>3</span></div>
<input type="button" value="Demo" onclick="mFunc ()">
<script>
function mFunc ()
{
var objSPAN = document.getElementById ('mSPAN'); alert ('objSPAN - ' + objSPAN.tagName);
var objDIV  = objSPAN.parentNode;                alert ('objDIV - '  + objDIV.tagName);
var objB    = objSPAN.firstChild;                alert ('objB - '    + objB.tagName);
var objI    = objB.nextSibling;                  alert ('objI - '    + objI.tagName);
}
</script>

В коде для определения индексов при клике по ячейке функции передается объект this. т.е. сам тег <TD>, по которому кликнули. Чтобы определить rowIndex, надо перейти к "родителю ячейки", к строке <TR> (именно строки имеют rowIndex). Вот поэтому и используется x.parentNode


2. with - это оператор для сокращения записи.
Перевод буквальный - русский предлог "С" ("С чем-то", "С кем-то")

Например, некоему объекту c id="myOBJ" вам надо назначить несколько свойств.
Можно написать так:
document.getElementById ('myOBJ').className        = 'myClass';
document.getElementById ('myOBJ').title            = 'Привет!';
document.getElementById ('myOBJ').style.border     = '2px solid red';
document.getElementById ('myOBJ').style.color      = 'yellow';
document.getElementById ('myOBJ').style.fontSize   = '14px';
document.getElementById ('myOBJ').style.fontFamily = 'arial';
Используя оператор with, всё то же самое можно записать чуть короче, используя меньше буковок:

with (document.getElementById ('myOBJ'))
   {
   className = 'myClass';
   title     = 'Привет!';
   with (style)
      {
      border     = '2px solid red';
      color      = 'yellow';
      fontSize   = '14px';
      fontFamily = 'arial';
      }
   }
как видите, with можно даже вкладывать - поначалу работали С самим объектом, а после with (style) работа идет СО стилем объекта

Внутри вышенаписанной функции строка
with (x) alert ('cellIndex = ' + cellIndex + '\nrowIndex = ' + parentNode.rowIndex); 
это то же самое, что и
alert ('cellIndex = ' + x.cellIndex + '\nrowIndex = ' + x.parentNode.rowIndex); 

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования