Javascript-форум (https://javascript.ru/forum/)
-   Prototype & script.aculo.us (https://javascript.ru/forum/prototype-script-aculo-us/)
-   -   Помогите разобраться с Insertion.After (https://javascript.ru/forum/prototype-script-aculo-us/5265-pomogite-razobratsya-s-insertion-after.html)

HDMan 01.10.2009 11:20

Помогите разобраться с Insertion.After
 
есть такой код
function multyinputInit() {

   allNodes = document.getElementsByClassName("multyinput");
   for(i = 0; i < allNodes.length; i++) {
      var docvalue = allNodes[i];
      var param = docvalue.identify();
      var newInput = document.createElement('img')
      newInput.setAttribute('src','/images/menu/plus.gif');
      newInput.setAttribute('id','my_butt_'+param);
      newInput.onclick = function() {multyinput(param,hr);};
      new Insertion.After(docvalue,newInput);
  }
}
он должен найти на странице все жлементы с классом multyinput и добавить после них img при нажатии на которую происходит вызов функции.

в реале имеем:
что на странице за всеми элементами содержащим класс multyinput вставляется изображение, но они имеют id и onclick как у последнего элемента.

при пошаговом выполнении выяснил что id и onclick элементу присваиваются правильно, но переопределяются при следующем прохождении цикла.

что я делаю не так?

e1f 01.10.2009 15:09

function multyinputInit() {
 
   allNodes = document.getElementsByClassName("multyinput");
   for(i = 0; i < allNodes.length; i++) {
      var docvalue = allNodes[i];
      var param = docvalue.identify();
      var newInput = document.createElement('img')
      newInput.setAttribute('src','/images/menu/plus.gif');
      newInput.setAttribute('id','my_butt_'+param);
      newInput.onclick = (function(p, h) {
        return function(){
          multyinput(p, h);
        }
      }(param, hr));
      new Insertion.After(docvalue,newInput);
  }
}

HDMan 01.10.2009 16:14

СПАСИБО все заработало
 
СПАСИБО все заработало.
Цитата:

Сообщение от e1f (Сообщение 31398)
function multyinputInit() {
 
   allNodes = document.getElementsByClassName("multyinput");
   for(i = 0; i < allNodes.length; i++) {
      var docvalue = allNodes[i];
      var param = docvalue.identify();
      var newInput = document.createElement('img')
      newInput.setAttribute('src','/images/menu/plus.gif');
      newInput.setAttribute('id','my_butt_'+param);
      newInput.onclick = (function(p, h) {
        return function(){
          multyinput(p, h);
        }
      }(param, hr));
      new Insertion.After(docvalue,newInput);
  }
}



Часовой пояс GMT +3, время: 18:05.