Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ссылка на объект, кроме this 
V
    Опции темы
bondarenko_a
Дата 16.11.2006, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 20.9.2006
Где: Kiev

Репутация: нет
Всего: 1



Помогите пожалуйста человеку!
Как сделать в функции ссылку на объект не из этого объекта а из самой функции, передачей id  как параметра.
У меня не получается
Код

function wid(ob)
   {
if(document.getElementById(ob).style.posTop<300)
{
document.getElementById(ob).style.posTop=document.getElementById(ob).style.posTop+1;
setTimeout("wid(ob)",10);
}
}


вызываю функцию так:
Код

 onclick="javascript:wid('grey');" 

У меня какая то синтаксическая ошибка?

Это сообщение отредактировал(а) bondarenko_a - 16.11.2006, 16:46
PM MAIL   Вверх
GIK
Дата 16.11.2006, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 6
Всего: 14



Вообщето нельзя вызывать из setTimeout("wid(ob)",10); функцию с параметрами. убирай объект ob.


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
bondarenko_a
Дата 16.11.2006, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 20.9.2006
Где: Kiev

Репутация: нет
Всего: 1



А как же обратиться к конкретному объекту? 
PM MAIL   Вверх
Nicholas_S
Дата 16.11.2006, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 12.10.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 19



Так напиши: setTimeout("wid('"+ob+"')",10);


--------------------
...все в мире относительно
PM   Вверх
12345c
Дата 16.11.2006, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



Как обычно, по имени. Передавайте не объект, а имя (строку), которое можно будет вставить в строку функции setTimeout

Добавлено @ 17:02 
Нет, то, что выше (setTimeout("wid('"+ob+"')",10); ) , будет верно, если ob - строка.
PM WWW   Вверх
GIK
Дата 16.11.2006, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 6
Всего: 14



Цитата(bondarenko_a)

А как же обратиться к конкретному объекту?  

Да как обычно smile  но если очень хочешь реализовать вызов c помощью таймера и при эот передавать объект, то можно вызывать функцию которая в свою очередь будет вызывать целевую функцию wid() c аргументом ob.



--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
bondarenko_a
Дата 16.11.2006, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 20.9.2006
Где: Kiev

Репутация: нет
Всего: 1



Спасибо, Nicholas_S, 

PM MAIL   Вверх
Nicholas_S
Дата 16.11.2006, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 12.10.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 19



bondarenko_a, а, нзчт!  smile 

12345c, если внимательно посмотришь, ob - строка, возвращается объект по ID: document.getElementById(ob)...


--------------------
...все в мире относительно
PM   Вверх
bondarenko_a
Дата 16.11.2006, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 20.9.2006
Где: Kiev

Репутация: нет
Всего: 1



Ну да ob - строка.
Эта функция может быть применима к разным объектам с разными id. Поэтому парамтр здесь - id.
А как сослаться на обьект? И изменять его параметры с пом переменной (без this)???

Это сообщение отредактировал(а) bondarenko_a - 16.11.2006, 17:08
PM MAIL   Вверх
Nicholas_S
Дата 16.11.2006, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 12.10.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 19



bondarenko_a, не очень понял вопрос. document.getElementById(ob) - и есть ссылка на объект, это оптимальный вариант.


--------------------
...все в мире относительно
PM   Вверх
bondarenko_a
Дата 16.11.2006, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 20.9.2006
Где: Kiev

Репутация: нет
Всего: 1



Nicholas_S, Серьезно?
Так и запишем. smile

Просто в учебниках есть примеры, когда функции вызываются из самих объектов ссылкой this и в самой функции не требуется писать конструкцию document.getElementById(ob).bla.bla.bla, а достаточно this.bla.bla.bla. А если функция вызывается не из самого объекта, то так не получится. smile
PM MAIL   Вверх
Nicholas_S
Дата 16.11.2006, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 12.10.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 19



bondarenko_a, правильно. Не юзай this в данном примере.


--------------------
...все в мире относительно
PM   Вверх
Avb
Дата 16.11.2006, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 5.7.2006

Репутация: 4
Всего: 13



bondarenko_a, выложи, плиз, пример и напиши, что конкретно в этом примере хочешь получить. Чувствую, что сделать так как ты хочешь можно, но не совсем понимаю в чем именно вопрос.
PM MAIL   Вверх
bondarenko_a
Дата 16.11.2006, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 20.9.2006
Где: Kiev

Репутация: нет
Всего: 1



Avb, Я пока не работаю над такой задачей. Но вполне могу с ней столкнуться.
Например, есть такая функция:
Код

function validate(obj, lowval, hival) {
    if ((obj.value < lowval) || (obj.value > hival))
      alert("Invalid Value!")
}

В примере ее вызывают из самого объекта:
Код

 onChange="validate(this, 18, 99)"


А если эту функцию надо вызвать из другой функции, или из другого объекта. Как передать ссылку на объект с уникальным id, или массив подобных объектов?

З.Ы. Не кидайте в меня камнями. Для меня javascript - новое и неизученное.
PM MAIL   Вверх
GIK
Дата 16.11.2006, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 6
Всего: 14



Код

<html>
<head>
<script>
var eee, iii=12, id, tim;
function wid(ob){
id=ob;
if(parseInt(document.getElementById(id).style.left)<=120)
 { iii++;
 document.getElementById(id).style.left=iii;
 tim = window.setInterval("ggg()",10);
 }
}
function ggg(){
clearInterval(tim);
wid(id);
}

</script>
</head>
<body>
<div id="grey" style="position:absolute; top:120; left:12;">grey</div>
<input type="button" onclick="wid('grey')" value="get"> 
</body>


Добавлено @ 17:43 
Цитата(bondarenko_a)

А если эту функцию надо вызвать из другой функции, или из другого объекта. Как передать ссылку на объект с уникальным id, или массив подобных объектов?

Ссылку можно создать в ДРУГОЙ функции, например так var ebjeckt=document.getElementById("id"); и передать ее куда угодно, а еще есть возможность передавать ссылку на объект,  глобальной переменной (определенной вне функций) и использовать ее из других функций.


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Nicholas_S
Дата 16.11.2006, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 12.10.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 19



bondarenko_a, в этом случае тебе поможет глобальная переменная (массив), куда ты можешь изначально записать ссылку на объект. Но, все же, это не есть хорошее решение, тем более что эта глоб. переменная может быть перезаписана во время исполнения скрипта. Используй обычный id объекта и getElementById().

Это сообщение отредактировал(а) Nicholas_S - 16.11.2006, 17:45


--------------------
...все в мире относительно
PM   Вверх
Avb
Дата 16.11.2006, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 5.7.2006

Репутация: 4
Всего: 13



bondarenko_a, ну перед вызовом функции получаешь ссылку на объект (тем же getElementById) и передаешь ее в качестве параметра
PM MAIL   Вверх
bondarenko_a
Дата 16.11.2006, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 20.9.2006
Где: Kiev

Репутация: нет
Всего: 1



GIK, Спасибо. Пример двойнойссылки. Пригодится smile
PM MAIL   Вверх
bondarenko_a
Дата 16.11.2006, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 20.9.2006
Где: Kiev

Репутация: нет
Всего: 1



Ребята, всем агромное мега-спасибо!
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0878 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.