Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Определить путь до ячейки (https://javascript.ru/forum/jquery/41258-opredelit-put-do-yachejjki.html)

Гробовщик 06.09.2013 06:47

Определить путь до ячейки
 
Доброго времени суток. Столкнулся с задачей которую пока что не в состоянии осилить самостоятельно, а именно что бы скрипт мог показывать мне человеческий путь до того элемента по которому я щёлкнул.
Пример исходника:
function operation(){
          alert(this.innerHTML);
}

<table id='table' border="1">
<tr>
<td colspan="22" style="background: #DCDCDC; "> Раздел 1 </td>
</tr>
<tr style="background: #FFFACD;">
<td>1</td>
<td>ТЕР18-03-001-02<img src="images/skrep.jpg "alt="альтернативный текст"></img></td>
<td>Установка радиаторов: стальных</td>
<td>чел. час</td>
<td colspan="2">8.15</td>
<td>10 854.54</td>
<td>7 593.04</td>
<td>1 695.26</td>
<td>181.14</td>
<td>1 566.24</td>
<td>88 464.50</td>
<td>61 883.37</td>
<td>13 816.37</td>
<td>1 476.29</td>
<td>12 764.85</td>
<td>65,6</td>
<td>534,64</td>
<td>3,13</td>
<td>25,51</td>
<td><span OnClick="operation()">ТЫЦ!!!</span></td>
<td>ТЕР18-03-001-02</td>
</tr>
<tr style="background: #BBFFFF">
<td><span OnClick="operation()">ТЫЦ!!!</span></td> 
<td>1-3-4</td>      
<td>Затраты труда рабочих(ср 3,4)</td>          
<td>чел.час</td>                        
<td>65.6</td>                   
<td>534.64</td> 
<td>6.16</td>                 
<td>6.16</td>                  
<td>&nbsp;&nbsp;</td>                
<td>&nbsp;&nbsp;</td>            
<td>&nbsp;&nbsp;</td> 
<td>3 293.38</td>
<td>3 293.38</td>
<td>&nbsp;&nbsp;</td>
<td>&nbsp;&nbsp;</td>
<td>&nbsp;&nbsp;</td>
<td><span OnClick="operation()">ТЫЦ!!!</span></td>
<td>&nbsp;&nbsp;</td>
<td>&nbsp;&nbsp;</td>
<td>&nbsp;&nbsp;</td>
<td>&nbsp;&nbsp;</td>
<td>&nbsp;&nbsp;</td> 
</tr>
<tr style="background: #BBFFFF;"> 
<td>&nbsp;&nbsp;</td>
<td>2</td>
<td>Затраты труда машинистов</td>
<td>чел.час</td>
<td>3.13</td>
<td>25.51</td>                     
<td>0.00</td>
<td>&nbsp;&nbsp;</td>
<td>&nbsp;&nbsp;</td>
<td>0.00</td>
<td><span OnClick="operation()">ТЫЦ!!!</span></td>
<td>0.00</td>
<td>&nbsp;&nbsp;</td>
<td>&nbsp;&nbsp;</td>
<td>0.00</td>
<td>&nbsp;&nbsp;</td> 
<td>&nbsp;&nbsp;</td>
<td>&nbsp;&nbsp;</td>
<td>&nbsp;&nbsp;</td>
<td>&nbsp;&nbsp;</td>
<td>&nbsp;&nbsp;</td>
<td>&nbsp;&nbsp;</td>
</tr>

т.е. когда мы жмём ТЫЦ!!! js(или jquery) должен быдет показать где конкретно находиться данный ТЫЦ!!!. Для чего это нужно? Я буду менять значение в ячейке которая находиться на один <tr> выше "ТЫЦ!!!" в <td> ячейке под номером 5 или 6. таблица выводиться динамически и нет возможности для каждого "ТЫЦ!!!" прописать свою функцию. Посоветуйте что нибудь)))

BETEPAH 06.09.2013 08:46

Человеческий путь? Можете привести пример такого пути?

ksa 06.09.2013 09:44

Цитата:

Сообщение от Гробовщик
Я буду менять значение в ячейке которая находиться на один <tr> выше "ТЫЦ!!!"

Как вариант...

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
td {
	width: 50px;
	heigth: 50px;
}
</style>
<script type="text/javascript">
$(function (){
	$('td').click(function (){
		var or=$(this).parent().prev();
		if (or.length==0) return;
		var i=this.cellIndex;
		or=or.get(0);
		or.cells(i).innerHTML=or.rowIndex+', '+i;
	});
});
</script>
</head>
<body>
<table border='1'>
	<tr>
		<td>&nbsp;</td>
		<td>&nbsp;</td>
		<td>&nbsp;</td>
	</tr>
	<tr>
		<td>&nbsp;</td>
		<td>&nbsp;</td>
		<td>&nbsp;</td>
	</tr>
	<tr>
		<td>&nbsp;</td>
		<td>&nbsp;</td>
		<td>&nbsp;</td>
	</tr>
</table>
</body>
</html>

Гробовщик 06.09.2013 11:46

BETEPAH,
var val=document.getElementById("table").getElementsBy TagName("tr")[2].getElementsByTagName("td")[1].innerHTML;
Как вариант

Гробовщик 06.09.2013 11:51

ksa,
Да я тоже нашёл решение в cellIndex и rowIndex? только на чистом js у меня короче вышло.
На ячейку вешаем
OnClick="fClick (this)"

with (x) var fcell=cellIndex;
with (x) var frow=parentNode.rowIndex;
var val=document.getElementById("table").getElementsByTagName("tr")[frow].getElementsByTagName("td")[fcell].innerHTML;

ksa 06.09.2013 13:22

Цитата:

Сообщение от Гробовщик
у меня короче вышло

Я рад за тебя. :D

ksa 06.09.2013 13:27

Цитата:

Сообщение от Гробовщик
у меня короче вышло

Я не поленился... Сделал 2 текстовых файла

var or=$(this).parent().prev();
if (or.length==0) return;
var i=this.cellIndex;
or=or.get(0);
or.cells(i).innerHTML=or.rowIndex+', '+i;

Он 141 байт...

И

with (x) var fcell=cellIndex;
with (x) var frow=parentNode.rowIndex;
var val=document.getElementById("table").getElementsByTagName("tr")[frow].getElementsByTagName("td")[fcell].innerHTML;

Он 189 байт!

И у кого после этого короче? :lol:

BETEPAH 06.09.2013 13:46

Цитата:

Сообщение от ksa
И у кого после этого короче?

Только в программировании такое возможно: мериться у кого короче ;)

Гробовщик 25.09.2013 19:22

ksa,
BETEPAH,
Весёлые вы ребята)


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