Страница 1 из 1

не иннициализируется обработчик события onclick

Добавлено: 15 апр 2006, 16:07
Andrewvp
function addsml(){
var cc1=document.getElementById("td1");
var sml = document.createElement("IMG");
var lnk = document.createElement("A");
lnk.href="#";
lnk.onclick="window.alert('Работает'); return false";
sml.src="smiles/nea.gif";
sml.border=0;
lnk.appendChild(sml);
cc1.appendChild(lnk);
}
выделенная строчка не работает, как присвоить значение обработчику события????

Добавлено: 15 апр 2006, 19:39
Oscar
Вот два варианта:
через href
и через js-функцию

Код: Выделить всё

<script>
function test() {
	alert('function');
	return false;
}
function addsml(){
	var cc1=document.getElementById("test");
	var sml = document.createElement("IMG");
	var lnk = document.createElement("A");
	lnk.href="javascript: alert('href');";
	lnk.onclick=test;
	sml.src="smile.gif";
	sml.border=0;
	lnk.appendChild(sml);
	cc1.appendChild(lnk);
}
</script>
[url=javascript: addsml();]add smile[/url]
<div id="test" style="border: 1px solid #000000; height: 100px; width: 100px;"></div>
Причём, если ф-ция test возвращает false, то href не срабатывает.

Добавлено: 15 апр 2006, 19:49
Andrewvp
дело не в этом! так-то оно работает без проблем!
если использовать такую комбинацию href (c #) и onclick (c return false), то после нажатия на ссылку (картинка смайлика), не прекращается "отображение" страницы. В твоем варианте смайлики перестанут быть "живыми" (прекратится прокрутка анимации) - это еще можно пережить, но после этого прекращается подгрузка недогруженых элементов!

Добавлено: 15 апр 2006, 20:01
Andrewvp
дело в том, что там где стоит alert(работает), реально стоит функция, которая этот смайлик вставляет в текстарий, я просто в конец этой функции поставил return false и получил false на чистом листе....

Добавлено: 15 апр 2006, 20:05
Oscar
Andrewvp,
в моём варианте js-функций смайлики не перестанут быть живимы, поскольку test возвращает false.
другое дело, что вариант "через href" действительно не пройдёт в таком случае.

То, что у тебя они могут замирать при этом коде - так это строку:
[url=javascript: addsml();]add smile[/url]
нужно заменить на:
add smile

Но! То, что тебе нужно было, заключается не в том, а вот тут:
lnk.onclick=test;

P.S. Спасибо за то, что просветил насчёт "прекращения подгрузки и анимации"!
Действительно, не знал ..

Добавлено: 15 апр 2006, 20:10
Oscar

Код: Выделить всё

<script>
function addsml(){
   var cc1=document.getElementById("test");
   var sml = document.createElement("IMG");
   var lnk = document.createElement("A");
   lnk.href="#";
   lnk.onclick=addsml;
   sml.src="smile.gif";
   sml.border=0;
   lnk.appendChild(sml);
   cc1.appendChild(lnk);
   return false;
}
</script>
[url=#][img]smile.gif[/img][/url]
<div id="test" style="border: 1px solid #000000; height: 100px; width: 100px;"></div>
так всё правильно работает?

Добавлено: 15 апр 2006, 21:12
Andrewvp
Нифига не получается, буду доделывать потом... щас другое горит.

Добавлено: 15 апр 2006, 21:17
Andrewvp
Дело в том, что в onclick передается текстовый параметр, так это событие какогото хрена генерируется при присвоении...
Ладно, больше времени нет эту тему развивать... позже напишу чего добился...

Добавлено: 18 апр 2006, 17:45
CrombL
У меня такого не происходит. Я наверное не правильн что-то сделал? Если у товарища генерируеться, а у меня нет - значит у меня бока