Неправильное формирование ссылки
Уважаемые участники форума, подскажите пожалуйста новичку-программисту ответ на следуйщий вопрос. В коде, который приведен ниже
(необходим еще рисунок для правильной работы), формируется ссылка - "Далее" (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> |
Еще кто-нибудь выскажется???
|
Учитесь локализировать проблемы, в этой куче кода никому не охота разбираться.
|
Часовой пояс GMT +3, время: 06:00. |