Показать сообщение отдельно
  #2 (permalink)  
Старый 11.03.2009, 14:10
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

не совсем ясна формулировка задачи, и конечная цель применения.
уточните если я неправильно понял
[telepatmode]
вы хотите, чтобы по клику на элементе у вас в кукую-нибудь переменную выводился XPath-путь до этого элемента.
Необходимо уточнение, что до любого элемента есть БЕСКОНЕЧНОЕ множество XPath-путей.Из них достаточно большое количество приемлимой длины.а оптимальных из них еденицы(и то смотря что понимать под оптимальностью)
Приведу вариант для построения самого простого "неумного" XPath-пути
function get_xpath(node)
	{
	var num,sibling;
	if(node.parentNode != undefined)
		{
		sibling=node.parentNode.getElementsByTagName(node.tagName);
		for(num=0;num<sibling.length;num++)
			if(node==sibling[num])
				break;
		return get_xpath(node.parentNode)+"/"+node.tagName+"["+(num+1)+"]";
		}
	else
		return "/";
	}

вроде бы все правильно написал, попробуйте.
вот HTML_ка для теста
<html>
<head>
<title>Выберите</title>
</head>
<body>
<span onclick="alert(get_xpath(this))">asdsad</span>
</body>
</html>


[/telepatmode]
Ответить с цитированием