Как привязать функцию к объекту

 
0
 
JavaScript
ava
Step | 28.10.2004, 15:44
есть функция изменяющая стиль...

есть много объектов,


как сделать так что бы функция меняла стиль в зависимости от выбраного объекта


я так понимаю нужно передать ид в функцию

получить объект по ид

но я не могу получить объект

Function a(name){

document.getElementById(name); - ошибка


как это чделать
Comments (10)
ava
GoodBoy | 28.10.2004, 14:54 #
Если функция вызывается при щелчке на самом объекте, то вот так:

<script>
function doSome(obj) {
obj.style.color="red";
}
</script>

<div onClick=doSome(this)>dkjfghjkdfh slkdjfghlskdjfgh slkdjfghlskdjgh lskdjfhlskd</div>
ava
Step | 28.10.2004, 15:00 #
неработает
added later:
твой код работает, а вот мне пишет что предпологаеться наличие идентификатора
ava
GoodBoy | 28.10.2004, 15:05 #
Работает! При щелчке на тексте он становится красным!!!

Проверено в: ИЕ 6, Мозилла 1.2, Феникс 0.9, Опера 7.0, НН 7.01, НН 6.0!!!!
ava
Step | 28.10.2004, 15:06 #

function FP_callJS(visible,obj_p) {}

<div onmouseover="FP_callJS(true,this)" id="reg">Меню</div>

дает ошибку
added later:
<html>

<head>
<meta http-equiv="Content-Language" content="ru">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Меню</title>
<script language="JavaScript">
<!--
function FP_callJS(visible, obj_p) {//v1.0

var obj=document.getElementById("layer1");


if (visible) {
var x=parseInt(obj.style.left);
var y=parseInt(obj.style.top);
var dx=parseInt(obj.style.width);
var dy=parseInt(obj.style.height);
var xc=window.event.x;
var yc=window.event.y;
obj.style.left=document.body.clientWidth-dx;
obj.style.top=yc+10+window.;
obj.style.visibility="visible";
}
else {
var x=parseInt(obj.style.left);
var y=parseInt(obj.style.top);
var dx=parseInt(obj.style.width);
var dy=parseInt(obj.style.height);
var xc=window.event.x;
var yc=window.event.y;


if ((xc-2<x)|(xc>x+dx)|(yc-2<y)|(yc>y+dy)) obj.style.visibility="hidden";
}
}
// -->
</script>
</head>

<body>
<div onmouseover="FP_callJS(true, this)" id="reg">Меню</div>
<div style="border-style:solid;position: absolute; z-index: 1; width: 127px; height: 45px; left: 8px; top: 31px;
background-color: #7777f8; visibility:hidden; border-width:1px" id="layer1" onmouseout="FP_callJS(false, this)">
<a href="ыва">Частного лица</a> <a href="выа">Компании</a></div>

</body>

</html>



Ни как немогу вдуплить
ava
GoodBoy | 28.10.2004, 15:11 #
всё работает:
<script>
function FP_callJS(visible,obj_p) {
if (visible) {
obj_p.style.color="red";
} else {
obj_p.style.color="blue";
}
}
</script>
<div onmouseover="FP_callJS(true,this)" onmouseout="FP_callJS(false,this)" id="reg">Меню</div>
ava
Step | 28.10.2004, 15:14 #
может я в штмл ошибку допустил глянь, пожалуйста... а то я свихнусь smile
ava
GoodBoy | 28.10.2004, 15:22 #
вот тут что-то другое должно быть!!!!

obj.style.top=yc+10+window.;

added later:
т. е. просто переменная не закончена!!!!
added later:
что-нить вот такое:

<html>

<head>
<meta http-equiv="Content-Language" content="ru">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Меню</title>
<script language="JavaScript">
<!--
function FP_callJS(visible, obj_p) {//v1.0

var obj=document.getElementById("layer1");


if (visible) {
var x=parseInt(obj.style.left);
var y=parseInt(obj.style.top);
var dx=parseInt(obj.style.width);
var dy=parseInt(obj.style.height);
var xc=window.event.x;
var yc=window.event.y;
obj.style.left=document.body.clientWidth-dx;
obj.style.top=yc;
obj.style.visibility="visible";
}
else {
var x=parseInt(obj.style.left);
var y=parseInt(obj.style.top);
var dx=parseInt(obj.style.width);
var dy=parseInt(obj.style.height);
var xc=window.event.x;
var yc=window.event.y;


if ((xc-2<x)|(xc>x+dx)|(yc-2<y)|(yc>y+dy)) obj.style.visibility="hidden";
}
}
// -->
</script>
</head>

<body>
<div onmouseover="FP_callJS(true, this)" id="reg" align=right>Меню</div>
<div style="border-style:solid;position: absolute; z-index: 1; width: 127px; height: 45px; left: 8px; top: 31px;
background-color: #7777f8; visibility:hidden; border-width:1px" id="layer1" onmouseout="FP_callJS(false, this)">
<a href="ыва">Частного лица</a> <a href="выа">Компании</a></div>

</body>

</html>
ava
Step | 28.10.2004, 15:26 #
Спасибо.... там хочу сделать корректор на скрол..... но еще не знаю как
ava
Sardar | 29.10.2004, 00:22 #
Код с передачей ID долчзен работать, ошибка где то в другом ;-) Если элемент "сам просит" изменить его, то передаем this как это показал GoodBoy. Можно устанивит элементу функцию как метод(element.myfunction=(function_name|funciton_definition)), и вызывать его.

А вообще что то мне не нравится как твой код развивается из последних топиков smile
Кидай наброски и готовое сюда, погрызём, подумаем.
ava
Step | 29.10.2004, 11:56 #
Sardar, объязательно
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  Sardar   Step   GoodBoy
advanced
Submit