Показать сообщение отдельно
  #8 (permalink)  
Старый 19.04.2014, 17:36
Интересующийся
Отправить личное сообщение для JaneLane Посмотреть профиль Найти все сообщения от JaneLane
 
Регистрация: 19.04.2014
Сообщений: 13

Сообщение от jsnb Посмотреть сообщение
Так а не проще при клонировании на клон новый обработчик вешать? Можно сделать функцию которая будет клонировать узел, принимать параметры и вешать нужный обработчик с нужными параметрами. Или вообще хранить параметры функции в каком-нибудь артрибуте узла и в функции брать их уже из кликнутого элемента.
В общем что-то типо этого:
<!DOCTYPE HTML>
<html>
  <head>
  <meta charset="utf-8">
  </head>
  <body>
<form>
a: <input type="text" name="a" value="5"><br>
b: <input type="text" name="b" value="3"><br>
<input type="button" value="clone link" onclick="cloneLink(this.form)">
</form>
<a href="#" id="test">test</a><br>

<script>
function setEvent(c, name, action) 
{
   if (c.addEventListener) {
   c.addEventListener( name, action, false );
   }
    else if (c.attachEvent) {
    c.attachEvent("on" + name, action);
   }
    else {
    c["on" + name] = action;
   }
}

function someFunc(a, b) {
  alert(a + ',' + b);
}

function cloneAndAddHandler(el, a, b) {
  var clone = el.cloneNode(true);
  setEvent(clone, 'click', function() { someFunc(a, b); });
  return clone;
}

function cloneLink(form) {
  var el = document.getElementById('test');
  var a = form.elements.a.value;
  var b = form.elements.b.value;
  var newA = cloneAndAddHandler(el, a, b);
  newA.innerHTML = 'test' + a + ',' + b;
  document.body.appendChild(newA);
  document.body.appendChild( document.createElement('br') );
}
</script>
  </body>
</html>


вот,например,мой кусок кода.я нахожу новый элемент и пытаюсь на него поставить обработчик.у меня бред написан?просто если смотреть через инспектор на моем узле как была функция c параметрами copyTask(0,0),так и осталась.мне нужно изменить на copyTask(0,1).я извиняюсь,что с такими тупыми вопросами,но в js пока что вообще не алё
function addEndRow(dayN,fieldName)
{
  

	var a=document.getElementsByTagName("input");
	
			for (i=0;i<a.length;i++) 
			{

				var obj=a.item(i);
				var oname=obj.name;
				if (oname==fieldName) 
				{	
		
				        obj.value++;                    
					 
				
	var cop=document.getElementById("cop_"+dayN+"_"+0);
	var newCop=cop.cloneNode(true);
	newCop.id="cop_"+dayN+"_"+obj.value;
	node= newCop.childNodes[1];
	node.name="copy_"+dayN+"_"+obj.value;
	node.id="copyB_"+dayN+"_"+obj.value;
var myTD=document.createElement('td');
	myTD.appendChild(newCop);

		
	


	var past=document.getElementById("past_"+dayN+"_"+0);
	var newPast=past.cloneNode(true);
	newPast.id="past_"+dayN+"_"+obj.value;
node2 = newPast.childNodes[1];
	node2.name="paste_"+dayN+"_"+obj.value;
	node2.id="pasteB_"+dayN+"_"+obj.value;
var myTD2=document.createElement('td');
	myTD2.appendChild(newPast);

		
	

	var cl=document.getElementById("cl_"+dayN+"_"+0);
	var newCl=cl.cloneNode(true);
	newCl.id="cl_"+dayN+"_"+obj.value; 
node3= newCl.childNodes[1];
	node3.name="clear_"+dayN+"_"+obj.value;
	node3.id="clearB_"+dayN+"_"+obj.value;
var myTD3=document.createElement('td');
myTD3.appendChild(newCl);

		
 var myTR=document.createElement('tr');

  myTR.appendChild(myTD);
  myTR.appendChild(myTD1);
  myTR.appendChild(myTD2);
  myTR.appendChild(myTD3);
  	

 
 document.getElementById("myT_"+dayN).appendChild(myTR);
var cp=document.getElementById("copyB_"+dayN+"_"+obj.value);
var ps=document.getElementById("pasteB_"+dayN+"_"+obj.value);
var cl=document.getElementById("clearB_"+dayN+"_"+obj.value);

cp.onclick=function(){copyTask(dayN,obj.value);}
ps.onclick=function(){pasteTask(dayN,obj.value);}
cl.onclick=function(){clearLine(dayN,obj.value);}
                                          
}
}
}
Ответить с цитированием