Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Как обратиться к элементу стр без ID? / 10 сообщений из 10, страница 1 из 1
19.12.2007, 12:30
    #35019954
armix2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обратиться к элементу стр без ID?
Например, что бы среагировать на мышь я пишу так:

<div class="submenuItem" id="podMenu1" onMouseOver="mouseOverPodMenuItemFunc('podMenu1')" onMouseOut="mouseOutPodMenuItemFunc('podMenu1');">

в коде я передаю функции ID элемента, потом в функции манипулирую.

Вопрос, как можно обойтись без передачи ID, просто неохота для каждого элемента писать новый ID в вызове mouseOverPodMenuItemFunc и mouseOutPodMenuItemFunc?

Т.е что-то передавать, что и было бы в дальнейшем связью с элементом, например где-то видел оператор this, но он не работает!
...
Рейтинг: 0 / 0
19.12.2007, 13:35
    #35020200
I_Work
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обратиться к элементу стр без ID?
Приведите пример вашего неработающего кода с this , и посмотрим, в чем проблема.
...
Рейтинг: 0 / 0
19.12.2007, 17:05
    #35021165
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обратиться к элементу стр без ID?
this - это объект, а ты передавай this.id - свой идентефикатор
...
Рейтинг: 0 / 0
20.12.2007, 03:44
    #35022111
Ghirik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обратиться к элементу стр без ID?
Можно вообще в тэгах ни чего не писать, ну или только "id" типа такого:
<div id="blabla">
</div>
Да и "id" не обязательно.
А при начальной загрузке, по событию window.onload запускать функцию, которая в цикле обойдет все дивы, присвоит им классы и назначит обработчиков событий. Если однотипных элементов на странице очень много, то выигрышь в скорости загрузки страницы очень ощутимый.

Вот наглядный пример:
Код: 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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script language="javascript">
<!--

function ok() { //Функция начальной установки прозрачности.
    var img = document.getElementsByTagName('img');
    for(var c =  0 ; c < img.length; c++) {
        img[c].src = 'img/' + (c +  1 ) + '.jpg';
        img[c].onmouseover = eff;
        img[c].onmouseout = eff;
        img[c].filters ? img[c].style.filter = 'alpha(opacity=' + s + ')' : img[c].style.opacity = s/ 100 ;
    }
}

    // Временные единицы относительные, подбирать экспериментально.
var up =  10 ; // Время выполнения эффекта, появление.
var dn =  15 ; // Время выполнения эффекта, исчезновение.
var s =  10 ;  // Начальная прозрачность, от  0 .
var r =  100 ; // Конечная прозрачность, до  100 .
/*----------------------------------------------------------------*/
var x =  25 /up;
var y = - 25 /dn;
var z = new Array();
var timer = new Array();
function eff(e) {
    var i = this.id;
    if (timer[i]) {
        clearInterval(timer[i]);
    }
    if (!e) e = window.event;
    if ((e.type) != 'mouseover') {
        z[i] = y;
        var t = dn;
    }
    else {
        z[i] = x;
        var t = up;
    }
        timer[i] = setInterval(function (i){return function(){ time(i)}}(this), t);
}

function time(i) {
    if (i.filters) {
        i.filters.alpha.opacity += z[i.id];
        var c = i.filters.alpha.opacity;
    }
    else {
        var c = i.style.opacity* 100 ;
        c += z[i.id];
        i.style.opacity = c/ 100 ;
    }
    if (c<=s){if(i.filters){i.filters.alpha.opacity=s}else{i.style.opacity=s/ 100 };clearInterval(timer[i.id]);return}
    if (c>=r){if(i.filters){i.filters.alpha.opacity=r}else{i.style.opacity=r/ 100 };clearInterval(timer[i.id]);return}
}
//-->
</script>
</head>
<body onload="ok()">
<img id="i1" />
<img id="i2" />
<img id="i3" />
<img id="i4" />
</body>
</html>
А здесь можно посмотреть работу
...
Рейтинг: 0 / 0
20.12.2007, 04:09
    #35022115
Ghirik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обратиться к элементу стр без ID?
Немного поспешил, для тэга img по спецификации нужно ещё пару атрибутов указывать.
Вот так правильно.
Код: 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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
<!--
function ok() { //Функция начальной установки прозрачности.
    var img = document.getElementsByTagName('img');
    for(var c =  0 ; c < img.length; c++) {
        img[c].src = 'img/' + (c +  1 ) + '.jpg';
        img[c].onmouseover = eff;
        img[c].onmouseout = eff;
        img[c].filters ? img[c].style.filter = 'alpha(opacity=' + s + ')' : img[c].style.opacity = s/ 100 ;
    }
}

    // Временные единицы относительные, подбирать экспериментально.
var up =  10 ; // Время выполнения эффекта, появление.
var dn =  15 ; // Время выполнения эффекта, исчезновение.
var s =  10 ;  // Начальная прозрачность, от  0 .
var r =  100 ; // Конечная прозрачность, до  100 .

var x =  25 /up;
var y = - 25 /dn;
var z = new Array();
var timer = new Array();
function eff(e) {
    var i = this.id;
    if (timer[i]) {
        clearInterval(timer[i]);
    }
    if (!e) e = window.event;
    if ((e.type) != 'mouseover') {
        z[i] = y;
        var t = dn;
    }
    else {
        z[i] = x;
        var t = up;
    }
        timer[i] = setInterval(function (i){return function(){ time(i)}}(this), t);
}

function time(i) {
    if (i.filters) {
        i.filters.alpha.opacity += z[i.id];
        var c = i.filters.alpha.opacity;
    }
    else {
        var c = i.style.opacity* 100 ;
        c += z[i.id];
        i.style.opacity = c/ 100 ;
    }
    if (c<=s){if(i.filters){i.filters.alpha.opacity=s}else{i.style.opacity=s/ 100 };clearInterval(timer[i.id]);return}
    if (c>=r){if(i.filters){i.filters.alpha.opacity=r}else{i.style.opacity=r/ 100 };clearInterval(timer[i.id]);return}
}
//-->
</script>
</head>
<body onload="ok()">
<img id="i1" src="" alt="" />
<img id="i2" src="" alt="" />
<img id="i3" src="" alt="" />
<img id="i4" src="" alt="" />
</body>
</html>
...
Рейтинг: 0 / 0
20.12.2007, 09:29
    #35022313
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обратиться к элементу стр без ID?
armix2000 , вот тебе пример где объект this работает
Код: plaintext
<td class="menu-m-n" onmouseout='this.className="menu-m-n"' onmouseover='this.className="menu-m-h"'>Адреса
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
20.12.2007, 10:32
    #35022492
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обратиться к элементу стр без ID?
armix2000Вопрос, как можно обойтись без передачи ID, просто неохота для каждого элемента писать новый ID в вызове mouseOverPodMenuItemFunc и mouseOutPodMenuItemFunc?
<div class="submenuItem" id="podMenu1" onmouseover="mouseOverPodMenuItemFunc(this.id)" onmouseout="mouseOutPodMenuItemFunc(this.id)">
...
Рейтинг: 0 / 0
25.12.2007, 14:05
    #35032458
armix2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обратиться к элементу стр без ID?
bazile armix2000Вопрос, как можно обойтись без передачи ID, просто неохота для каждого элемента писать новый ID в вызове mouseOverPodMenuItemFunc и mouseOutPodMenuItemFunc?
<div class="submenuItem" id="podMenu1" onmouseover="mouseOverPodMenuItemFunc(this.id)" onmouseout="mouseOutPodMenuItemFunc(this.id)">

А вот за ентот ответ спасибо!
...
Рейтинг: 0 / 0
26.12.2007, 04:03
    #35034062
I_Work
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обратиться к элементу стр без ID?
автор<div class="submenuItem" id="podMenu1" onmouseover="mouseOverPodMenuItemFunc(this.id)" onmouseout="mouseOutPodMenuItemFunc(this.id)">
Ага. А потом в функциях mouseOverPodMenuItemFunc() и mouseOutPodMenuItemFunc() используете getElementById() .

Проще использовать <div class="submenuItem" id="podMenu1" onmouseover="mouseOverPodMenuItemFunc( this )" onmouseout="mouseOutPodMenuItemFunc( this )"> и сразу работать с элементом.
...
Рейтинг: 0 / 0
26.12.2007, 09:54
    #35034300
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обратиться к элементу стр без ID?
I_Work , так ему придется все алгоритмы переписывать! Ведь автору просто авторнеохота для каждого элемента писать новый ID
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Как обратиться к элементу стр без ID? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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