Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.09.2009, 02:34
Аватар для Paguo-86PK
Профессор
Отправить личное сообщение для Paguo-86PK Посмотреть профиль Найти все сообщения от Paguo-86PK
 
Регистрация: 16.09.2009
Сообщений: 253

table.cells select(from,to)
Всё просто: Необходимо выделить в таблице ячейки, будто их выделил пользователь.
А так же и обратно: Узнать, какие ячейки выделял пользователь.

Есть вариант с onmousedown/onmouseup и window.event.srcElement.cellIndex и т.п. Но это, сами понимаете, очень криво...

А вот как выделить скриптом группу ячеек - вопрос сложнее. Подсветка не годится: Нужно, чтобы пользователь мог реально перетащить выделение куда-нибудь...

P.S.: Пишу редактор Dump'а со встроенным Disassembler. Функционирует нормально, проблемы остались в интерфейсе: Не знаю, как узнать какую часть кода в Dump'е выделили и куда перетащили...

На данный момент нашлась:
function SelectTarget(target, from,to) {
var rng, sel;
 if ( document.createRange ) {
  rng = document.createRange();
  rng.selectNode( target )
  sel = window.getSelection();
  sel.removeAllRanges();
  sel.addRange( rng );
 } else {
  var rng = document.body.createTextRange();
  rng.moveToElementText( target );
  rng.moveStart("word", from);
  rng.moveEnd("word", to );
  rng.select();
 }
}
Похоже, осталось лишь разобраться с определением выделенных ячеек.

Спасибо!

Последний раз редактировалось Paguo-86PK, 16.09.2009 в 04:41. Причина: Кое-что выгуглил
Ответить с цитированием
  #2 (permalink)  
Старый 16.09.2009, 11:06
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Для DOM можно почитать тут. Для ИЕ надо гуглить
Ответить с цитированием
  #3 (permalink)  
Старый 16.09.2009, 12:07
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
window.onload = function() {
	var table = document.getElementById("table");
	var selStart = table.tBodies[0].rows[0].cells[4];
	var selEnd = table.tBodies[0].rows[3].cells[0];
	var range;
	var ie /*@cc_on = true @*/;
	if(ie) {
		range = document.selection.createRange();
		var range2 = range.duplicate();
		range.moveToElementText(selStart);
		range2.moveToElementText(selEnd);
		range.setEndPoint("EndToEnd", range2);
		range.select();

	} else {
		range = document.createRange();
		range.selectNodeContents(selEnd);
		range.setStart(selStart, 0);
		var selection = window.getSelection();
		selection.removeAllRanges();
		selection.addRange(range);
	}
};
</script>
</head>
<body>
	<table id="table" summary="">
		<tbody>
			<tr>
				<td>1</td>
				<td>2</td>
				<td>3</td>
				<td>4</td>
				<td>5</td>
			</tr>
			<tr>
				<td>6</td>
				<td>7</td>
				<td>8</td>
				<td>9</td>
				<td>10</td>
			</tr>
			<tr>
				<td>11</td>
				<td>12</td>
				<td>13</td>
				<td>14</td>
				<td>15</td>
			</tr>
			<tr>
				<td>16</td>
				<td>17</td>
				<td>18</td>
				<td>19</td>
				<td>20</td>
			</tr>
		</tbody>
	</table>
</body>
</html>
Range, TextRange и Selection
Ответить с цитированием
  #4 (permalink)  
Старый 17.09.2009, 00:54
Аватар для Paguo-86PK
Профессор
Отправить личное сообщение для Paguo-86PK Посмотреть профиль Найти все сообщения от Paguo-86PK
 
Регистрация: 16.09.2009
Сообщений: 253

Сообщение от e1f Посмотреть сообщение
Для DOM можно почитать тут. Для ИЕ надо гуглить
Спасибо!
Сообщение от Octane Посмотреть сообщение
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
...
<body>
	<table id="table" summary="">
		<tbody>
...
		</tbody>
	</table>
</body>
</html>
Range, TextRange и Selection
Спасибо большое!

Какрас-таки там я и нашёл приведённый мною способ...

А вот <tbody>...</tbody> я никогда на страницах не использовал. Он так обязателен? По стандартам W3C?

Последний раз редактировалось Paguo-86PK, 17.09.2009 в 00:58.
Ответить с цитированием
  #5 (permalink)  
Старый 17.09.2009, 00:57
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Paguo-86PK
А вот <tbody>...</tbody> я никогда на страницах не использовал. Он так обязателен?
Если не указать, все равно появится.
Ответить с цитированием
  #6 (permalink)  
Старый 12.02.2011, 01:34
Новичок на форуме
Отправить личное сообщение для Apple Посмотреть профиль Найти все сообщения от Apple
 
Регистрация: 11.02.2011
Сообщений: 4

А наоборот, как узнать какие ячейки таблицы выделил пользователь?


UPD.: вопрос снимаю, свою (чуть более узкую) задачу решил.

Последний раз редактировалось Apple, 13.02.2011 в 23:05.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск