ai suoi tempi avevo risolto clonando il vettore
codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Pagina senza titolo</title>
<script language="javascript" type="text/javascript">
// <!CDATA[
Array.prototype.clone = function ()
{
var tmp = [];
for(var i in this)
{
if(this[i].constructor == Array)
{
tmp[i] = this[i].slice(0);
}
else
{
tmp[i] = this[i];
}
}
return tmp;
};
function $()
{
var elements = new Array();
for (var i = 0; i < arguments.length; i++)
{
var element = arguments[i];
if (typeof element == 'string')
element = document.getElementById(element);
if (arguments.length == 1)
return element;
elements.push(element);
}
return elements;
}
function Button1_onclick()
{
var v = $("TextArea1");
var a = [10,20,30];//vettore originale
v.value = "a = " + a + "\r\n";//mostro vettore originale
var b = a;//assegno a b l'indirizzo di a
v.value += "b = " + b + "\r\n";//mostro b
b[1] = 999;//modifico un elemento
v.value += "a = " + a + "\r\n";//mostro che ho modificato il vettore originale
}
function Button2_onclick()
{
var v = $("TextArea1");
var a = [10,20,30];//vettore originale
v.value = "a = " + a + "\r\n";//mostro a
var b = a.clone();//b punta ad un clone di a
v.value += "b = " + b + "\r\n";//mostro b
b[1] = 999;//modifico b
v.value += "a = " + a + "\r\n";//mostro che a è intatto
}
// ]]>
</script>
</head>
<body>
<input id="Button1" type="button" value="button" onclick="return Button1_onclick()" />
<input id="Button2" type="button" value="button" onclick="return Button2_onclick()" />
<textarea id="TextArea1" style="width: 573px; height: 406px"></textarea>
</body>
</html>