Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   ошибка вычисления image.width (https://javascript.ru/forum/misc/3201-oshibka-vychisleniya-image-width.html)

anikey999999 30.03.2009 22:14

"Ну дык не надо писать глупости с умным видом, типа"
Я пишу глупости, потому что не разбираюсь в этом вопросе, потому и спрашиваю, в чем мои ошибки.
"сделайте "alert"
мне надо следующее
===========================
image.onload = function() {
alert(this.width+","+this.height);
}
image.src = file;
--------------------------
значения картинки this.width и this.height определяются в alert,
но не работают в конструкции типа
if ((this.width>0)&(this.height>0)) {
document.write(...);
}
========================
как это победить
задача такая, если картинка маленькая или отсутствует - ищем другую
методом случайного перебора (random)

Kolyaj 30.03.2009 22:30

Цитата:

Сообщение от anikey999999
Я пишу глупости, потому что не разбираюсь в этом вопросе, потому и спрашиваю, в чем мои ошибки.

Почувствуйте разницу между
image.src =file; <-- это что по вашему?
и
image.src =file; <-- я же вот здесь устанавливаю
Как почувствуете, вам сразу на форумах отвечать охотнее будут.

Цитата:

Сообщение от anikey999999
как это победить

Нельзя использовать document.write после загрузки страницы, используйте innerHTML.

anikey9999999 31.03.2009 10:50

при чем здесь document.write
если не проходит if ((this.width>0)&(this.height>0)) {
кто-нибудь полный код решения задачи в состоянии прописать?

Valentin Gvozdev 01.04.2009 22:31

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

Т.е. нужно было посмотреть ее реальный размер, вычислить коээфициент уменьшения, и если он >1, то уменьшить размер картинки - вроде бы все просто. Однако несмотря на примитивность задачи, долбался я очень долго - в зависимости от ситуации width получался либо 1, либо соответсвовал предыдущей загруженной картинке, либо еще как (а порой и соотвествовал тому, что надо, но было это совершенно непредсказуемо).
Проблема решилась очень просто. Все вычисления пришлось выполнять в функции, вызываемой по onload картинки. Только так удалось добиться того, что значения ее размеров в свойстве width соответсвуют реальности вне зависимости от браузера, скорости соединения итд. Уверен, что и вашем случае такое пройдет.
Удачи!

Валентин
http://vgvozdev.narod.ru

Kolyaj 01.04.2009 22:38

Цитата:

Сообщение от Valentin Gvozdev
Все вычисления пришлось выполнять в функции, вызываемой по onload картинки. Только так удалось добиться того, что значения ее размеров в свойстве width соответсвуют реальности вне зависимости от браузера, скорости соединения итд.

Потому что по другому невозможно, чисто теоретически.

anikey99999999 03.04.2009 12:07

Все! Удалось решить задачу. Аж, двумя спослбами. Исходники и реализацию можно посмотреть на
http://kachay.ucoz.org/rend_foto_dosug2.htm
http://kachay.ucoz.org/rend_foto_forum2.htm


Часовой пояс GMT +3, время: 21:00.