Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.02.2011, 17:32
Новичок на форуме
Отправить личное сообщение для Variable Посмотреть профиль Найти все сообщения от Variable
 
Регистрация: 30.01.2010
Сообщений: 4

перебор id циклом
Возникает проблема, когда я циклом хочу перебрать все ид и присвоить им при клике только 1 функцию(по клику внутрь блока ставится картинка), но таким методом не работает
for (i=1;i<=18;i++) {
    $('id'+i).click( function () {
        $('id'+i).html('<img src="cross.png">')
    })
}
Ответить с цитированием
  #2 (permalink)  
Старый 11.02.2011, 17:54
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

http://javascript.ru/basic/closure#p...-ispolzovaniya
Ответить с цитированием
  #3 (permalink)  
Старый 11.02.2011, 18:06
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,491

Вообще в данном случае юзать this проще.
Ответить с цитированием
  #4 (permalink)  
Старый 12.02.2011, 09:14
Новичок на форуме
Отправить личное сообщение для Variable Посмотреть профиль Найти все сообщения от Variable
 
Регистрация: 30.01.2010
Сообщений: 4

а сейчас что не так?
block = $('div[id^=id]')
function crossover(divs) {
	    for(var i=0; i<divs.length; i++) {  
	        divs[i].onclick = function() {
	            return function() { divs[i].innerHTML('<img src="cross.png">') }
	        }
	    }
	}
Ответить с цитированием
  #5 (permalink)  
Старый 12.02.2011, 09:27
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

А вы статью прочитали?
Ответить с цитированием
  #6 (permalink)  
Старый 12.02.2011, 15:34
Новичок на форуме
Отправить личное сообщение для Variable Посмотреть профиль Найти все сообщения от Variable
 
Регистрация: 30.01.2010
Сообщений: 4

Да, и насколько я понял, чтобы функция сохранялась для каждого элемента, она должна состоять внутри другой, или нет? я взял из примера код
Ответить с цитированием
  #7 (permalink)  
Старый 12.02.2011, 18:28
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Variable
Да, и насколько я понял, чтобы функция сохранялась для каждого элемента, она должна состоять внутри другой, или нет?
не правильно трактуете смысл, вам нужно создать замыкание, а вообще:
Сообщение от Aetae
Вообще в данном случае юзать this проще.
На вскидку:
<script type="text/javascript">
window.onload = function() {
    var fragment = document.createDocumentFragment(),  i = 10;
    
    while(i--) {
        div = document.createElement('div');
        div.innerHTML = 'click';
        
        div.onclick = (function(i) {
            return function() {
                this.innerHTML = i;
            }
        })(i);
        fragment.appendChild(div);
    }
    document.body.appendChild(fragment);
};
</script>

Последний раз редактировалось monolithed, 12.02.2011 в 20:18.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перебор DOM элементов DjDiablo jQuery 3 04.02.2011 16:26
Как изменять имена переменных циклом Ivan Draga Общие вопросы Javascript 5 21.01.2011 08:46
проблема с циклом mAstAk4 Events/DOM/Window 3 06.12.2010 17:47
Перебор свойвств и методов объектов Иваннн Events/DOM/Window 8 27.08.2010 15:11
Как создать перебор закладок по кругу? barmalei Общие вопросы Javascript 5 25.04.2009 14:36