Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.10.2010, 16:51
Новичок на форуме
Отправить личное сообщение для dess Посмотреть профиль Найти все сообщения от dess
 
Регистрация: 18.10.2010
Сообщений: 5

Как добавить ссылку на событие в js-код?
Есть следующий код, который занимается тем, что цепляет из определенного адреса название сообщения и ссылку на него, а затем генерирует список таких ссылок:

<script type="text/javascript">
function tMess(n){
var a=[' новое сообщение',' новых сообщения',' новых сообщений'];
return a[n%10==1&&n%100!=11?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2]
}; 
function getPM(){
$.get("/messages",function(a){var s=$("b.unread",a).size();
if (s) {var n=tMess(s),all=[],leg=(s==1)?'Сообщение':'Сообщения';$("b.unread",a).each(function(){var title = $(this).html(), href = $(this).parent().attr("href"); all.push('» <a href="'+href+'">'+title+'</a>'
);}); 

new _uWnd('ls','Новые сообщения',250,120,{icon:'/images/message.png',align:'left'},'<center>У тебя '+s+n+'!</center><br><fieldset><legend>'+leg+'</legend>'+all.join("<br>")+'</fieldset>'
);}});
setTimeout(getPM,10000)};
getPM();
</script>


Задача в том, чтобы эта ссылка, сгенерированная указанным выше скриптом, выполняла следующую функцию:

onclick="openLayerB('PM',0,'/js/profile/pm.xml','Личные сообщения',750,410,'0','','',0,'justify'); $('#newmessage').dialog('close'); return false;"


  • Как синтаксически правильно интегрировать это событие onclick в верхний скрипт?
  • И, если такое невозможно, то каким образом можно хотябы присвоить такой ссылке атрибут rel.
  • И если второй вариант невозможен, то как просто вставить в генерируемый html статическую ссылку


Спасибо. Я пытался решить вопрос самостоятельно, но тщетно. С синтаксисом плохо ориентируюсь.

Последний раз редактировалось dess, 18.10.2010 в 17:03.
Ответить с цитированием
  #2 (permalink)  
Старый 18.10.2010, 22:39
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

1. пока что у вас что-то не связное выходит
2. в jQuery для события onclick, другой синтаксис:
$('element').click(function(){});
Ответить с цитированием
  #3 (permalink)  
Старый 22.10.2010, 13:29
Кандидат Javascript-наук
Отправить личное сообщение для Jurasmi Посмотреть профиль Найти все сообщения от Jurasmi
 
Регистрация: 25.11.2008
Сообщений: 115

Можно навешивать обработчики события "click" после вставки HTML-элементов на страницу.
Назначить класс у ссылки:
all.push('<a href="'+href+'" class="handled">'+title+'</a>');

потом назначить обработчики:
var handler = function(){
		openLayerB('PM',0,'/js/profile/pm.xml','Личные сообщения',750,410,'0','','',0,'justify'); 
		$('#newmessage').dialog('close'); 
		return false;
	};
$('a.handled').live('click', handler);



Или, если для вставки ссылок в документ вы используете что-то вроде innerHTML, то при генерировании ссылки можно написать так:
var handler = function(){
		openLayerB('PM',0,'/js/profile/pm.xml','Личные сообщения',750,410,'0','','',0,'justify'); 
		$('#newmessage').dialog('close'); 
		return false;
	};
all.push('<a href="'+href+'" onclick="handler()">'+title+'</a>');
Ответить с цитированием
  #4 (permalink)  
Старый 28.10.2010, 06:27
Новичок на форуме
Отправить личное сообщение для dess Посмотреть профиль Найти все сообщения от dess
 
Регистрация: 18.10.2010
Сообщений: 5

Jurasmi, спасибо, но я так и не разобрался как это подогнать под свой код...

Вот:
function tMess(n){var a=[' новое сообщение',' новых сообщения',' новых сообщений'];return a[n%10==1&&n%100!=11?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2];};function getPM(){$.get("/index/14",function(a){var s=$("b.unread", a).size();if(s){var n=tMess(s),h=_uWnd.getdims(),j=h.clientW-245,g=h.clientH-135,href=(s==1)?$("b.unread",a).parent().attr("href"):'/index/14';new _uWnd('ls','Уведомление',200,100,{icon:'http://javascript.ucoz.net/images/message.png',min:0,max:0,x:j,y:g,alert:1,autosize:1,fixed:1,shadow:1,resize:0,fadetype:1,fadespeed:1000,fadeclosetype:2,fadeclosespeed:400},'Пришло '+s+n+'! <br><hr><a id=msn class=cbut style=cursor:default>открыть</a>');$('#msn').click(function(){openLayerB('PM',0,'/js/profile/pm.xml','Личные сообщения',750,410,'0','','',0,'justify');_uWnd.close('ls');});}});setTimeout(getPM,120000)};getPM();


Мне нужно сделать ссылку в этом участке:
<a id=msn class=cbut style=cursor:default>открыть</a>

Jurasmi,
Ответить с цитированием
  #5 (permalink)  
Старый 28.10.2010, 07:47
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от dess
<a id=msn class=cbut style=cursor:default>открыть</a>
кавычки проставьте
Ответить с цитированием
  #6 (permalink)  
Старый 28.10.2010, 11:22
Новичок на форуме
Отправить личное сообщение для dess Посмотреть профиль Найти все сообщения от dess
 
Регистрация: 18.10.2010
Сообщений: 5

Сообщение от monolithed Посмотреть сообщение
кавычки проставьте
я проставлял. скрипт не работает... т.е. при клике на ссылку ничего не происходит...
Ответить с цитированием
  #7 (permalink)  
Старый 28.10.2010, 11:46
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от dess
я проставлял. скрипт не работает... т.е. при клике на ссылку ничего не происходит...
я вам это сказал для того чтобы вы подправили свой расхлябный код.
не удивлюсь если вы один из адептов курса Е.Попова.

В вашем коде никто разбираться не будет пока вы его не приведет в порядок.

вызов к.л. функции может производится к примеру так:
$('#msn').click(function(){
tMess(n);
});

если вы этого не понимаете, следуйте в раздел работа
Ответить с цитированием
  #8 (permalink)  
Старый 28.10.2010, 12:06
Новичок на форуме
Отправить личное сообщение для dess Посмотреть профиль Найти все сообщения от dess
 
Регистрация: 18.10.2010
Сообщений: 5

Сообщение от monolithed Посмотреть сообщение
не удивлюсь если вы один из адептов курса Е.Попова.
1. monolithed, я не просил мне хамить. Если вам нравится оскорблять незнакомых людей, попробуйте сделать это лично, а не публично да еще и в интернете.
2. Если никто не будет смотреть код, значит так и будет. Не нужно выражений. Я никого не обязываю смотреть эту тему, если не нравится — проходите мимо, а если есть предложения по оформлению — в ЛС.
3. Я бы не обращался за помощью если бы разбирался в языке и в том каким должен быть код. И если мой код ужасен (я не программист), то я предпочитаю остаться без ответа чем наслушаться грубостей на форуме.

Последний раз редактировалось dess, 28.10.2010 в 12:10.
Ответить с цитированием
  #9 (permalink)  
Старый 28.10.2010, 13:07
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от dess
1. monolithed, я не просил мне хамить.
каким образом я вам нахамил? если это по вашему хамство, то вы явно ошиблись форумом.

т.к. здесь есть какие-то минимальные устоявшиеся правила форматирования кода, а если вы не можете не пытаетесь даже приложить усилия для решения вашей проблемы и подготовить код перед тем как покатать его кому-то то идите в раздел работа.

Сообщение от dess
а если есть предложения по оформлению — в ЛС.
в частном порядке вопросы решаются в разделе работа.

Сообщение от dess
3. Я бы не обращался за помощью если бы разбирался в языке и в том каким должен быть код. И если мой код ужасен (я не программист), то я предпочитаю остаться без ответа чем наслушаться грубостей на форуме.
Давать советы и не читать правила это по вашему глупости?
Ответить с цитированием
  #10 (permalink)  
Старый 28.10.2010, 14:04
Новичок на форуме
Отправить личное сообщение для dess Посмотреть профиль Найти все сообщения от dess
 
Регистрация: 18.10.2010
Сообщений: 5

Сообщение от monolithed Посмотреть сообщение
каким образом я вам нахамил?
А, по-вашему, нормально причислять людей к каким-то адептам чьих-то курсов?
Вы — модератор? Если да, то в таком случае просто удалите мою тему без полемики, а если нет, то не нужно тыкать людей в правила лицом в такой форме.

Сообщение от monolithed Посмотреть сообщение
вы явно ошиблись форумом.
Вы правы, я серьезно сглупил, обратившись к братьям по языку, ведь, как оказалось, на stackoverflow явно куда безопаснее обращаться за помощью, хоть и на английском. Кстати, если уж вы так яро отстаиваете традиции форума... Вы понизили карму не моему однодневному профилю, а карму и репутацию форуму в целом в глазах тех, кому я буду его «рекомендовать». Мою тему удалят, но мнение о форуме останется надолго.

Сообщение от monolithed Посмотреть сообщение
Давать советы и не читать правила это по вашему глупости?
Я говорил не «глупости», а грубости. Ваши «советы» высказаны в весьма грубой форме. Знаете, когда нибудь и вам придется задать вопрос в теме, в которой вы мало что смыслите. Причем не потому, что не хотите делать ничего сами, а потому, что у вас нет выхода. Не думаю, что вам будет приятно, когда вас пошлют в раздел «работа» или еще куда из-за одной неисправной строки. Я приложил усилия в поиске решения и пытался по-разному настроить и синтакис и по-разному вызывать функцию... Я точно знаю, что код не работает именно из-за ссылки.

Тема закрыта, т.к. на этот же вопрос с первого раза ответили ребята на stackoverflow. Можно удалять за «нарушение правил», «неОдекватное поведение» и «расхлябаный код» В том числе и мой профиль тоже, т.к. судя по приёму, он мне больше не понадобится. Буду благодарен.

P.S. На заметку: «неодекватное» пишется через «а», «расхлябаный» пишется с двумя «н», а «по вашему» — через дефис. У вас на форуме нет правил по правописанию случайно? Ведь такое «расхлябанное» письмо неудобно читать (как и мой код, наверное)

Последний раз редактировалось dess, 28.10.2010 в 14:54.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите как правильно оформить код frolvict Общие вопросы Javascript 4 30.04.2010 10:51
Как добавить значение в input type="file"? PAMAC Общие вопросы Javascript 2 01.04.2010 19:59
Как правильно прописать свой код в .js Всеми_Любимый Элементы интерфейса 6 23.02.2010 21:34
При нажатии на ссылку браузер запоминает как переход на др страничку mff AJAX и COMET 13 17.02.2010 21:46
Как вставить событие внутрь document.write Vivasvan Events/DOM/Window 8 13.06.2008 20:02