Сообщение от 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);}
}
}
}