Показать сообщение отдельно
  #17 (permalink)  
Старый 27.08.2011, 11:47
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

бляха муха, ну что за писанина !

перед размещением кода, если хочешь, чтоы тебе помогли, оформляй его красиво! если не знаешь, что и как, то легче засунуть код сюда, на jsbeautifier и нажать сверху на Beautify JavaScript (или ctrl+enter). потом оформленный код засовывай уже сюда.

это я к тому, что твой код невозможно читать.

вот твой код, оформленный через выше описанный инструмент. красным отмечена проблемная строка
function pr(pic) {
    var piw = pic.width; //Ширина 500
    var f = document.getElementById('d')
    var p;
    if (f.selectedIndex == 0) {
        pr() = false;
    }
    if (f.selectedIndex == 1) {
        p = 0.25
    }
    if (f.selectedIndex == 2) {
        p = 0.5
    }
    if (f.selectedIndex == 3) {
        p = 0.75
    }
    if (f.selectedIndex == 4) {
        p = 1
    }
    var piwp = piw * p
    var itog = piwp + piw
    setInterval(function () {
        if (itog > piw) {
*!*
            piw += 10
*/!*
        }
    }, 10)
    alert(piwp)
    alert(piw)
    alert(itog)
}


если ты сам не догадался, то ты увеличиваешь не ширину картинки, а переменную. переменная то увеличивается, а ширина картинки - нет. делай присваивание, например, так (это та красная строка, только дополненная)
piw += 10
pic.width = piw;

и убедительно прошу, не забывай про jsbeautifier

и еще : не забывай очищать интервал. ведь когда ширина картинки дойдет до предела, то интервал будет так же вызываться каждые 10мс.

сделать это можно так (твой код)

*!*id =*/!*  setInterval(function () {
        if (itog > piw) {
            piw += 10;
            pic.width = piw;
        } else {
              *!*clearInterval(id);*/!*
        }
    }, 10)

Последний раз редактировалось melky, 27.08.2011 в 11:50.
Ответить с цитированием