parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Вот решение задачи - хочу критики

Jk 20.05.2003 15:40

Вот то,что япридумал. посмотрите ошибки, пожалуйста. Может всё это можно упростить?

Повторяю - мне не нужны превьюшки. Нужно максимальное отображение картинки. Вроде как в АсиДиси смотришь

Обрабатываем страницу вида index.html?img=15
Фото храняться в этой же папке

все циферки,в основном, зависят от конкретной задачи. В моём случае страница состоит из двух частей - слева меню, ширина которого зависит от размеров экрана и справа большое поле, которое нужно по максимуму заполнить картинкой

При этом нужно учитывать размеры экрана, занятые под панели браузера - для всех они разные - это можно сделать нехитрую проверку

Сразу возникли проблемы:
1. Как правильно в jscript производить арифметические действия.
Я в переменную img заношу число (например 15)
Если я пишу documnet.write(img+1); - выводится 151
Если я пишу documnet.write(img-1); - выводится 14
Если я пишу documnet.write(img-(-1)); - выводится 16
<script language="JavaScript" type="text/JavaScript">
// Отрезаем от адреса всё, что  после вопросительного знака - получаем img=15
var attr = location.search;
// Создаём переменную с номером фотографии - 15
var img = attr.substring (5, attr.length);
// задаём номер начальной и конечной фотографии, подразумевая, что пропусков нет - имена фотографий в виде 15.jpg
var begin = 1;
var end = 119;
// новая переменная - имя фотографии 15.jpg
var imgsrc = img + '.jpg';
// проверяем, если img=0 или не существует, то присваеваем ей одно из конечных значений
if (imgsrc == '.jpg' || imgsrc == '0.jpg'){
imgsrc = end+'.jpg';
}

// подгружаем в память данную и две соседних фото  - для 15 это будут  14 и  16 - это нужно  делать,  чобы при переходе на следующее фото всё  сразу отображалось
var imgsrc2 = img -(- 1) + '.jpg';
var imgsrc3 = img - 1 + '.jpg';
var imgsrc4 = end + '.jpg';
image=new Image;image.src=imgsrc; //Теперь мы  можем всё что угодно узнать о картинке 15.jpg, т.к. она у нас в памяти в переменной image
image2=new Image;image2.src=imgsrc2;
image3=new Image;image3.src=imgsrc3;
image4=new Image;image4.src=imgsrc4;


// Параметры экрана - высота и  ширина
var screenh = screen.height;
var screenw = screen.width;
// В зависимости от размеров экрана задаём размеры поля для отображения фотографии - width и height.
// imgw и imgh - это максимальные рамеры ширины или  высоты картинки
if (screenw < 900) {
var leftw = 150;
var height = screenh-165;
var width = screenw-leftw-12;
var imgw = width*0.85;
var imgh = imgw *0.65
}
if (screenw >= 900 && screenw < 2400) {
var leftw = 200;
var height = screenh-165;
var width = screenw-leftw-12;
var imgw = width*0.85;
var imgh = imgw *0.75
}
if (screenw >= 2400) {
var leftw = 200;
var height = screenh-165;
var width = screenw-leftw-12;
var imgw = width*0.9;
var imgh = imgw *0.75
}
// Округляем imgh и imgw - а  то браузеры  не понимают width="90.56"
var imgh = Math.round(imgh);
var imgw = Math.round(imgw);
// Рассчитываем отношения  ширин и высот рисунка и поля  под рисунок. 
var imagecoeff = image.width / image.height;
var areacoeff = imgw / imgh;

document.write('<table width=\"100%\" height=\"0\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">');
document.write('<tr><td align=\"center\">');

// Проверяем с помощью отношений ширин и длин, вписывается ли  картинка в  окно. Если не вписывается, то вписываем её по максимальному  параметру - ширине  или высоте. Другой параметр выставлять не обязательно - т.к. картинки на диске и грузятся быстро.
if(imagecoeff >= areacoeff){
document.write('<img src=\"'+imgsrc+'\" width=\"'+imgw+'\" border=\"1\"><br>');
}
if(imagecoeff < areacoeff){
document.write('<img src=\"'+imgsrc+'\" height=\"'+imgh+'\" border=\"1\"><br>');
}
document.write('</td></tr>');

//Делаем строку навигации внизу. Почему-то не получается у меня прибавить к переменной img - 1. Можно только отнять (-1)
var nextimg = img - (-1);
var previmg = img - 1;
document.write('<tr><td align=\"center\">');
if (img <= begin){
document.write('<a href=\"index.html?img='+end+'\">Назад</a>  <a href=\"index.html?img='+nextimg+'\">Дальше</a>');
}
if (img > begin && img < end){
document.write('<a href=\"index.html?img='+previmg+'\">Назад</a>  <a href=\"index.html?img='+nextimg+'\">Дальше</a>');
}
else if (img >=  end) {
document.write('<a href=\"index.html?img='+previmg+'\">Назад</a>  <a href=\"index.html?img=1\">Дальше</a>');
}
document.write('</td></tr>');
document.write('</table>');
</script>