Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.09.2011, 23:38
Интересующийся
Отправить личное сообщение для eternal Посмотреть профиль Найти все сообщения от eternal
 
Регистрация: 10.02.2011
Сообщений: 19

Onclick элемента списка <li>
После получения данных ajax обрабатываю xml, создаю список и каждому пункту присваиваю onclick. При этом если делать это через li.onclick (закомментировано) то работает некорректно: при нажатии на любой пункт списка - вызывается значение присваиваемое последнему пункту. Если делать через setAttrubite то работает правильно..
for (var i=0; i<listArray.length; i++)
     {
	     html = "";
		 li = document.createElement('li');
		 id = null;
	 	 id = listArray.item(i).getAttribute("id");

		 //li.onclick = function(){GetItem(id)};
		 li.setAttribute("onclick","GetItem("+id+")");
		 
		 if (!listArray.item(i).firstChild){
		 html += "-без названия-";
		 }
		 else{
		 html += listArray.item(i).firstChild.data;
		 }
 
li.innerHTML = html;
myUl.appendChild(li);
	 }

Как исправить?
Ответить с цитированием
  #2 (permalink)  
Старый 05.09.2011, 06:45
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

for (var i=0; i<listArray.length; i++) 
     { 
         html = ""; 
         li = document.createElement('li'); 
         id = null; 
         id = listArray.item(i).getAttribute("id"); 
  
         (function( id ) {
             li.onclick = function(){
                 GetItem( id );
             }
         })( id );
           
         if (!listArray.item(i).firstChild){ 
         html += "-без названия-"; 
         } 
         else{ 
         html += listArray.item(i).firstChild.data; 
         } 
   
li.innerHTML = html; 
myUl.appendChild(li); 
     }
Ответить с цитированием
  #3 (permalink)  
Старый 05.09.2011, 20:18
Интересующийся
Отправить личное сообщение для eternal Посмотреть профиль Найти все сообщения от eternal
 
Регистрация: 10.02.2011
Сообщений: 19

Спасибо, работает. Скажите пожалуйста что надо почитать чтобы понять как это работает..
Ответить с цитированием
  #4 (permalink)  
Старый 05.09.2011, 21:08
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Замыкания
Ответить с цитированием
  #5 (permalink)  
Старый 05.09.2011, 22:04
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

а можно и без замыканий:
for (var i=0; i<listArray.length; i++)
     {
         html = "";
         li = document.createElement('li');
         id = null;
         id = listArray.item(i).getAttribute("id");
   
         *!*
         with ({id: id}) {
             li.onclick = function(){
                 GetItem( id );
             }
         }
*/!*
            
         if (!listArray.item(i).firstChild){
         html += "-без названия-";
         }
         else{
         html += listArray.item(i).firstChild.data;
         }
    
li.innerHTML = html;
myUl.appendChild(li);
     }

Прикольная тема
Ответить с цитированием
  #6 (permalink)  
Старый 05.09.2011, 22:18
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

ну да тока вот with в strict режиме вроде как ошибку выдает... где-то я об этом читал... хотя может путаю.
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор элемента из выпадающего списка Naik jQuery 0 21.07.2011 13:49
Случайный показ элемента li из составного списка Александр345 jQuery 3 14.04.2011 20:13
Заполнить список значениями из динамически созданного выпадающего списка zhuzha Элементы интерфейса 0 17.08.2010 14:40
onClick эвент для всего документа, кроме отдельно взятого элемента DOM el_erizo Events/DOM/Window 5 19.03.2010 15:09
раскрывать/скрывать <td> при выборе определенного элемента списка zip Элементы интерфейса 2 19.01.2009 13:58