Почему не работает this.getAttribute('href')

o_nix

Хранитель порядка
Регистрация
7 Ноя 2007
Сообщения
1.070
Реакции
1.063
HTML:
<!DOCTYPE html>
<html>
<body>


<a href="javascript: var tag33=this.getAttribute('href'); alert(tag33);">далее</a>

</body>
</html>

Собственно надо в скрипте переменной присвоить значение href элемента по которому кликнули определяется как this.getAttribute('href')

но вот переменной почему то не присваивается. Переменная должна быть типа text функция её вроде так и возвращает по карйней мере window.open(this.getAttribute('href'));
работает без проблем а вот присваиваться переменной ну никак не хочет :(

Пример примитивный чисто для примера и пояснения.

-----------------------------------------------
разобрался
url для перехода получался совсем в другом месте а this.getAttribute('href') не работает не там не там.
тоесть он в принципе в такой вложеной конструкции неработоспособен
 
потому как если this в ссылке, то он будет равен объекту Window, это равнозначно что ты вставишь значение href в адресную строку и выполнишь его, но относиться это значение ссылки (в данном примере яваскрипт) будет уже ко всему окну; если же тебе нужно обработать ссылку, - используй onclick для тега a, например:
<a onclick="var tag33=this.getAttribute('href'); alert(tag33);return false;" href="любой текст :)">далее</a>
 
FaLL3N
нет у меня возможности юзать onclick

попытаюсь объяснить
this.getAttribute('href') - вызывается в функции а не по событию сделаному пользователем.
сама эта функцция вызывается другой функцией - реагирующей на клик пользователя :D

так вот в нужной мне функции тамже где
window.open(this.getAttribute('href'));
работает и отсылает пользователя по href по которому он кликнул
мне необходимо записать этот href (чистый url без каких либо js) в переменную для дальнейшего использования в собственных целях.

и вот хоть что делай а

perem = this.getAttribute('href');
или
var perem = this.getAttribute('href');

и ещё куча разных вариантов которые я перепробовал возвращают в пременную нечто что не является тем самым мне нужным url - а представляют из себя ХЗ что тк никак даже вывести немогу (alert не срабатывает) чтоб посмотреть что оно такое и в каком формате.

причём это в не зависимости от того до window.open(this.getAttribute('href')); выполнять присвоение или после.
 
есть возможность задавать id тегам <a> ?
 
скажем так всё то что касается <a> и <div> в который они вложены я трогать немогу - изза этого и такое извращение :D

ну никак я не ожидал что this.getAttribute('href') не в контексте window.open будет возвращать чёрт знает что.
может оно массив возвращает или что, как проверить то ??
 
приведи ф-цию которая реагирует на клик. Чем расширенее будет вопрос - тем проще и быстрее будет найти ответ :)
скрипт для дебага свойств и методов объекта:
Код:
function dumpProps(obj, parent) {
   // Go through all the properties of the passed-in object 
   for (var i in obj) {
      // if a parent (2nd parameter) was passed in, then use that to 
      // build the message. Message includes i (the object's property name) 
      // then the object's property value on a new line 
      if (parent) { var msg = parent + "." + i + "\n" + obj[i]; } else { var msg = i + "\n" + obj[i]; }
      // Display the message. If the user clicks "OK", then continue. If they 
      // click "CANCEL" then quit this level of recursion 
      if (!confirm(msg)) { return; }
      // If this property (i) is an object, then recursively process the object 
      if (typeof obj[i] == "object") { 
         if (parent) { dumpProps(obj[i], parent + "." + i); } else { dumpProps(obj[i], i); }
      }
   }
}
Как посмотреть что внутри:
Код:
<!DOCTYPE html>
<html>
<body>
<a href="javascript:alert((this)); dumpProps(this)">далее</a>

<script>
function dumpProps(obj, parent) {
   for (var i in obj) {
      if (parent) { var msg = parent + "." + i + "\n" + obj[i]; } else { var msg = i + "\n" + obj[i]; }
      if (!confirm(msg)) { return; }
      if (typeof obj[i] == "object") { 
         if (parent) { dumpProps(obj[i], parent + "." + i); } else { dumpProps(obj[i], i); }
      }
   }
}
</script>
</body>
</html>
 
Запусти этот пример -

HTML:
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>NewDoc</title>
<script type="text/javascript">
<!--
window.onload = WaitLoad;
function WaitLoad(){
	var span = document.getElementById('sp');
	alert(span);
	var link_arr = document.getElementsByTagName('a');
	for (i=0; i<link_arr.length; i++){
	alert(link_arr[i]);
	if(link_arr[i].addEventListener){
		link_arr[i].addEventListener('click', click_url, true);
	}
	else {
		link_arr[i].attachEvent('onclick', click_url)
	};
	}
}

function click_url(event){
	event = event || window.event;
	var aim = event.srcElement || event.target;
	alert('Переход по адресу: '+aim.href);
	try{event.stopPropagation();event.preventDefault();}
	catch(err){event.cancelBubble=true;event.returnValue=false;}

};
//-->
</script>
</head>

<body>
<a href="javascript://blablabla0">далее0</a>
<a href="http://blablabla1">далее1</a>
<a href="file://blablabla2">далее2</a>
<span id="sp">123</span>
</body></html>
 
Назад
Сверху