powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / А обработчик события - это атрибут узла или нет?
29 сообщений из 29, показаны все 2 страниц
А обработчик события - это атрибут узла или нет?
    #34361366
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я динамически назначаю обработчик onClick для строки таблицы
Код: plaintext
1.
2.
3.
onClick="javascript:MarkRow(\""+this.Tab.name+"\","+i+",\""+this.onScroll+"\");"; 
// row - строка таблицы
row.setAttribute("onClick",onClick, 0 );
Это работает в firefox и не работает в IE7
Мне уже дали сегодня советы, граничащие с шаманством и они сработали.
Может ещё дадут?
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34361443
@RuSHA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
row.onclick = function () { eval(onClick ) };
________________________
Спроси, может отвечу ;)
icq 111718060
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34361465
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, сейчас попробую
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34362219
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал, перестало работать и в firefox тоже.
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34362248
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
muk07Попробовал, перестало работать и в firefox тоже.
не надо "javascript:"
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34362465
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не работает и с ним и без него
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34362951
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй так id-обьект к которую добавляется event

function AAA(evt)
{

evt=(evt) ? evt : ((window.event) ? event : null);
if (evt)
{
var obj=(evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null) ;
if(obj)
{
твой код
}
}


document.getElementById(id).onclick=AAA
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34363786
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Я человек дремучий. Поясните что это за аргумент evt?
2) обработчик onClick должен быть повешен индивидуально на каждую строку таблицы.
он имеет вид
MarkRow(имя таблицы, номер строки, имя некоторой функции);
все они, в пределах таблицы, отличаются друг от друга только номером строки. Неясно как в рамках вашего предложения протащить номер строки в ф-ю ААА
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34364099
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
muk07Мне уже дали сегодня советы, граничащие с шаманством и они сработали.
muk07не работает и с ним и без него
займитесь шаманством, ... или отладкой на алертах
и всё само заработает
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34364173
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно поподробнее что нужно

я понял так динамически создаётся обьект со своими атрибутами
и нужно добавить евент onclick
то что я передал то на созданный обьект с id вешается функция для onclick
все атрибуты для этого обьекта можно получить внутри функции через obj
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34364252
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Linuxerзаймитесь шаманством, ... или отладкой на алертах
и всё само заработает
если бы у меня было время, я бы посмеялся всесте с Вами.
alert сообщает, что он onclick тот что нужно. Но щелчок мышью его не fire.
michael R можно поподробнее что нужно
Вот более подробный фрагмент текста
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
		// строки таблицы помещаются в tbody
		tbd = document.createElement("tbody");
		this.Tab.appendChild(tbd);
		tbd.setAttribute("id","tbody"+TabName);
		for(i =  0 ; i < this.xmlRows.length; i++) {
			e=this.xmlRows[i];
			row=tbd.insertRow(i); 	
			// по умолчанию цвет строк - белый
			row.setAttribute("bgcolor","#ffffff", 0 );
			// обработчик onClick=MarkRow(имя таблицы,номер строки,ф-я что ещё сделать);
			// красит строку в выделенный цвет
			onClick="MarkRow('"+this.Tab.name+"',"+i+",'"+this.onScroll+"');"; 
			row.setAttribute("onclick",onClick, 0 );
			alert(row.onclick); // так LINUXER велел
			// помещаем значения полей в строку
			for(j= 0 ;j<Cols.length;j++){ 
				FieldName=this.Cols[j][COLFIELD];
				Cell=row.insertCell(j);
				Cell.align=this.Cols[j][COLALIGN];
				atr=e.getAttribute(FieldName);
				type=this.Cols[j][COLTYPE];
				Cell.innerHTML=ConvertFrom(atr,type);
				Cell.setAttribute("id",FieldName);
			}
		}

В firefox событие onclick отрабатывается
В IE7 - никакой реакции
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34364274
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у тебя IE7
не обратил внимание
для IE6 точно работает
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34364298
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня и в IE6 не работает
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34364341
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
счас попробую переделать
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34364595
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я немного переделал
идея следующая
для каждого обьекта к которому приклеивается события
добавляются атрибуты
и эти атрибуты вытаскиваются в функции на событие

сделай HTML файл


<script language="JavaScript">
function AAA(evt )
{
evt=(evt) ? evt : ((window.event) ? event : null);
if (evt)
{
var obj=(evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null) ;
if(obj)
{
alert(this.getAttribute("Tab") + " " + this.getAttribute("num") + " " + this.getAttribute("scroll"))
}
}
}


function BBB()
{
var tbd = document.createElement("tbody");
var tt=document.getElementById("T1")
tbd.setAttribute("id","tbody1");
for(i = 0; i < 3; i++)
{
var row=document.createElement("TR")
row.setAttribute("bgcolor","#FF0000",0);
row.setAttribute("Tab","A" + i,0);
row.setAttribute("num", "B" + i ,0);
row.setAttribute("scroll","C" + i,0);
row.onclick= AAA

for(j=0;j<3;j++)
{
var td=document.createElement("TD")
td.innerHTML="a"
row.appendChild(td)
}
tbd.appendChild(row)
}
tt.appendChild(tbd)

}
</script>

<html>
<body onload="BBB()" />
<TABLE border="2" id="T1"/>
</html>
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34364908
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
muk07
Код: plaintext
1.
2.
3.
4.
5.
			// обработчик onClick=MarkRow(имя таблицы,номер строки,ф-я что ещё сделать);
			// красит строку в выделенный цвет
			onClick="MarkRow('"+this.Tab.name+"',"+i+",'"+this.onScroll+"');"; 
			row.setAttribute("onclick",onClick, 0 );
			alert(row.onclick); // так LINUXER велел

Если нужно просто перекрасить, то "динамический номер" передаётся только чтобы идентифицировать ячейку. Вместо этого можно просто передать её(dom object cell) параметром.

алертится кстати должна не строчка, а function(){...};
заметил,что в ие не работает
Код: plaintext
row.setAttribute("onclick",onClick, 0 );
;
в ие, но не в опере работает
Код: plaintext
row.setAttribute("onclick",function(){eval(onClick);}, 0 );
.
более ИМХО понятный вариант @RuSHA работает везде(по крайней мере строка интерпретируется)

кстати что значит последний параметр 0?
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34365080
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне тоже интересно что за параметр 0
нарисовал чисто по аналогии
но работает в IE Mozilla
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34365388
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, Michael_R, Linuxer.
текст michael_R я воспроизвёл - он работает. Сегодня попытаюсь приспособить к своим нуждам.
Для меня неожиданно, что контекстом (this) обоаботчика события является строка.
У меня всё время получалось window. Чего-то недопонимаю.

По поводу параметра 0:
1st Javaeditor helpsetAttribute Method
Sets the value of the specified attribute.

Syntax

object.setAttribute( sName , vValue [ , iFlags ] )
Parameters

sName Required. String that specifies the name of the attribute.
vValue Required. Variant that specifies the string, number, or Boolean to assign to the attribute.
iFlags Optional. Integer that specifies one the following flags: 0 When the attribute is set, it overwrites any attributes with the same name, regardless of their case.
1 Default. The case of the attribute that you set is respected when it is set on the object.
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34367162
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в IE7 тоже работает ??
сам провериьт не могу
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34368546
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>michael_R
Ваш пример работает под ff и ie7.
После переноса предложенной методики в мою задачу всё работвет под ff и попрежнему не работает в ie7.
Не передаётся evnt в обработчик:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
function trOnClick(evnt ){
var j;

evnt=(evnt) ? evnt : ((window.evnt) ? evnt : null); 
if (evnt){alert( 1 );
	var obj=(evnt.target) ? evnt.target : ((evnt.srcElement) ? evnt.srcElement : null) ;
	if(obj){..................
приходит alert(0); и не приходит alert(1);
сейчас буду разбираться.
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34368547
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
исправление:
Код: plaintext
1.
2.
3.
4.
5.
6.
function trOnClick(evnt ){
var j;

evnt=(evnt) ? evnt : ((window.evnt) ? evnt : null); alert( 0 );
if (evnt){alert( 1 );
	var obj=(evnt.target) ? evnt.target : ((evnt.srcElement) ? evnt.srcElement : null) ;
	if(obj){...............
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34368551
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Убрал if-ы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
function trOnClick(evnt ){
/*var j;

evnt=(evnt) ? evnt : ((window.evnt) ? evnt : null); alert(0);
if (evnt){alert(1);
	var obj=(evnt.target) ? evnt.target : ((evnt.srcElement) ? evnt.srcElement : null) ;
	if(obj){ */

		var tbd=this.parentNode;
		var tab=tbd.parentNode;
		num=this.getAttribute("rowNum");
		var rows=tbd.getElementsByTagName("tr");
		var nRows=rows.length; 
		if(nRows== 0 ){
			tab.setAttribute("curRow","-1");
			return;
		}
		tab.setAttribute("curRow",num);
		for(j= 0 ;j<nRows;j++){
			rows[j].setAttribute("bgcolor","#ffffff", 0 );
		}
		rows[num].setAttribute("bgcolor","#00ffff", 0 ); 
		var onScroll=tab.getAttribute("onScroll");
		if(onScroll) eval(onScroll+"()");
/*	}
}*/
}
теперь не срабатывает
Код: plaintext
		if(onScroll) eval(onScroll+"()");
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34368561
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Виноват, дело не в eval, а в нижележащем ajax.
Разбираюсь.
Я слышал много высказываний, что IE - г.., но не думал что до такой степени.
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34368848
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужно
evnt=(evnt) ? evnt : ((window.event) ? evnt : null); alert(0);
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34368850
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не совсм так

evt=(evt) ? evt : ((window.event) ? event : null);
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34369427
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал по Вашему:
Код: plaintext
1.
2.
3.
4.
evnt=(evnt) ? evnt : ((window.event) ? event : null); alert( 0 );
if (evnt){alert( 1 );
	var obj=(evnt.target) ? evnt.target : ((evnt.srcElement) ? evnt.srcElement : null) ;
	if(obj){........... 
Работает.
Правда не могу понять зачем это надо. По сути дела написано:
если пришло событие, то использовать его, в противном случае работать с windows.event, если оно есть. В каком случае это может произойти (приход windows.event)?
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34369467
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в принципе это проверка на вшивость

у каждого браузера своя система обьектов событий
я только не знаю насчёт Opera поэтому не уверен чт сработает

остальной код это получение обьекта на котором произошло событие
и проверка его существования
и это тоже отличается от браузера к браузеру

хотя в твоём случаи возможно это не нужно

Скажи а это работает в Opera ?
мне видимо тоже придётся использовать этот принцип
хотел бы для всёх браузеров
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34370380
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё таки оставил в виде
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
function trOnClick(evnt ){
/*var j;

evnt=(evnt) ? evnt : ((window.evnt) ? evnt : null); alert(0);
if (evnt){alert(1);
	var obj=(evnt.target) ? evnt.target : ((evnt.srcElement) ? evnt.srcElement : null) ;
	if(obj){ */

		var tbd=this.parentNode;
		var tab=tbd.parentNode;
		num=this.getAttribute("rowNum");
		var rows=tbd.getElementsByTagName("tr");
		var nRows=rows.length; 
		if(nRows== 0 ){
			tab.setAttribute("curRow","-1");
			return;
		}
		tab.setAttribute("curRow",num);
		for(j= 0 ;j<nRows;j++){
			rows[j].setAttribute("bgcolor","#ffffff", 0 );
		}
		rows[num].setAttribute("bgcolor","#00ffff", 0 ); 
		var onScroll=tab.getAttribute("onScroll");
		if(onScroll) eval(onScroll+"()");
/*	}
}*/
}
если оставить с if-ми, то не удаётся вызвать onclick принудительно - без возникновения события, а надо.
fireEvent не помогает
...
Рейтинг: 0 / 0
А обработчик события - это атрибут узла или нет?
    #34370390
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
michael_RСкажи а это работает в Opera ?
не пробовал. Поставлю на днях и попробую.
...
Рейтинг: 0 / 0
29 сообщений из 29, показаны все 2 страниц
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / А обработчик события - это атрибут узла или нет?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]