Уважаемые участники форума, подскажите пожалуйста новичку-программисту ответ на следуйщий вопрос. В коде, который приведен ниже
(необходим еще рисунок для правильной работы), формируется ссылка - "Далее" (id=linktonextstep) в адрес которой включаются координаты двойных нажатий (после подстроки
www.localhost.index.php?coords=). Сама строка строка формируется без проблем - перменная HREFSTR. Но при присвоении linktonextstep.href=String(HREFSTR); присваевается ссылке только часть строки. В итоге в строку адреса попадают
не все координаты двойных нажатий. Почему ??!!!
Заранее спасибо, за ответы
Полный код моей задачи:
<script language=javascript>
//**********
var NumDblClick=0;
var HREFSTR='www.localhost.index.php?coords=';
//Рисуем линии тегами IMG
function line(ArrCoordsX1,ArrCoordsY1,ArrCoordsX2,ArrCoordsY2)
{
//Обнуляем строку, которая будет хранить список всех тегов точек
StrPoints='';
for(IndexImgLines=0;IndexImgLines<ArrCoordsX1.length;IndexImgLines++)
{
x1=ArrCoordsX1[IndexImgLines];
y1=ArrCoordsY1[IndexImgLines];
x2=ArrCoordsX2[IndexImgLines];
y2=ArrCoordsY2[IndexImgLines];
//Определяем координаты, расположенные левее и переназначаем их, чтобы пара x1, y1 была левой координатой
if(x1>x2)
{
tmpx=x2;
tmpy=y2;
x2=x1;
y2=y1;
x1=tmpx;
y1=tmpy;
}
//Определяем параметры функции для прорисовки линии y=y0+kx
k=(y2-y1)/(x2-x1);
y0=y1-k*x1;
//Формируем начало тега рисунка точек, общее для всех точек
xcomm='<img src=s.bmp width=2,height=2 style=\'position: absolute; top: ';
//Начинаем строить график линии слева направо
for(i=x1;i<=x2;i++)
{
yi=0;
//Вычисляем ординату точки по формуле линии y=y0+kx плюс учитываем смещение рисунка относительно начала окна
yi=Math.round(Number(y0)+k*i)+Number(objmap1.style.posTop)
//Вычисляем абциссу точки с учетом сдвига рисунка относительно начала окна
xi=Number(i)+Number(objmap1.style.posLeft);
//Формируем строку - тега отображения рисунка
StrPoints+=xcomm+yi+';left:'+xi+'\'>';
//Блок для заполнения пробелов между точками (чтобы линия выглядела сплошной линией, а не набором точек)
//Заполнение идет сверху вниз каждый раз, когда две соседние точки по оси абцисс отображаются с пропуском
//пиксела по оси ординат
if (i!=x1)
{
//Находим максимальную и минимальную ординату из двух соседних точек по оси абцисс
if ((yprev>yi))
{
ysmall=yi;
ybig=yprev;
}
else
{
ysmall=yprev;
ybig=yi;
}
//Проводим вертикальную линию в точке xi от минимальной ординаты к максимальной
for(j=ysmall+1;j<ybig;j++)
{
StrPoints+=xcomm+j+';left:'+xi+'\'>';
}
}
yprev=yi;
};
}
//Отображаем сформированные точки в окне браузера
container.innerHTML =StrPoints;
};
function ProcessingImg(StrPoints)
{
//Определяем координаты пиксела, по которому был сделан клик
CoordX=window.event.x+document.body.scrollLeft;
CoordY=window.event.y+document.body.scrollTop;
//objmap1.style.posLeft
//В этом условии определяем координаты предыдущего клика в зависимости от содержимого ссылки
//для этого
//Определяем, является ли эта точка первой
Prev='';
LastIndex=0;
ProcessYCoord=true;
PrevCoordY='';
PrevCoordX='';
if (HREFSTR.charAt(HREFSTR.length-1)!='='){
//Определяем
ArrCoords=new Array();
ArrCoordsX1=new Array();
ArrCoordsY1=new Array();
ArrCoordsX2=new Array();
ArrCoordsY2=new Array();
OldCoordY=CoordY;
OldCoordX=CoordX;
indexURL=Number(HREFSTR.length)-1;
CountXY=0;
PrevCoord='';
while(HREFSTR.charAt(indexURL)!='=')
{
if (HREFSTR.charAt(indexURL)==',')
{
if (ProcessYCoord)
{
PrevCoordY=PrevCoord;
ProcessYCoord=false;
PrevCoord='';
}
else
{
ArrCoordsX1[CountXY]=Number(OldCoordX);
ArrCoordsY1[CountXY]=Number(OldCoordY);
ArrCoordsX2[CountXY]=Number(PrevCoord);
ArrCoordsY2[CountXY]=Number(PrevCoordY);
OldCoordX=PrevCoord;
OldCoordY=PrevCoordY;
ProcessYCoord=true;
PrevCoord='';
CountXY=CountXY+1;
}
}
else
{
PrevCoord=HREFSTR.charAt(indexURL)+PrevCoord;
}
indexURL=Number(indexURL)-1;
};
ArrCoordsX1[CountXY]=Number(OldCoordX);
ArrCoordsY1[CountXY]=Number(OldCoordY);
ArrCoordsX2[CountXY]=Number(PrevCoord);
ArrCoordsY2[CountXY]=Number(PrevCoordY);
line(ArrCoordsX1,ArrCoordsY1,ArrCoordsX2,ArrCoordsY2);
};
//Расставляем запятые в зависимости от того, является ли пара координат первой в списке
if(HREFSTR.charAt(HREFSTR.length-1)!='=')
HREFSTR=HREFSTR+',';
//Добавляем в ссылку координаты клика
HREFSTR=HREFSTR+CoordX+','+CoordY;
if (NumDblClick>1)
{
linktonextstep.href='';
linktonextstep.href=String(HREFSTR);
alert(HREFSTR);
}
NumDblClick=NumDblClick+1;
}
</script>
<a name='linktonextstep' href='stop&coords='>Далее</a>
<img id='objmap1' src='1.png' width=1000 height=1000 onDblClick='ProcessingImg()' STYLE='position: fixed'>
<div id='container'></div>