Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите разобраться (https://javascript.ru/forum/misc/21009-pomogite-razobratsya.html)

9xakep 25.08.2011 14:45

Помогите разобраться
 
<script type="text/javascript" language="javascript">
function pr(pic) {
setInterval(function (pic) {
if(pic.width<640) {
pic.width=pic.width+10
}
},10)
</script>
<img src="http://goiron.enetgallery.com/_ph/1/224558321.jpg" width="300" name="chel" onmouseover="pr(this)">

Я честно говоря,не знаю правильно это или нет,то есть передается ли аргумент pic к другой функции:
function pr(pic) 
setInterval(function (pic)

Поскольку все остальное точно правильно.

Sweet 25.08.2011 14:50

function pr(pic)
setInterval(function ()

9xakep 25.08.2011 14:54

хм....все равно не работает:
<script type="text/javascript" language="javascript">
function pr(pic) {
setInterval(function () {
if(pic.width<640) {
pic.width=pic.width+10
}
},10)
</script>
<img src="http://goiron.enetgallery.com/_ph/1/224558321.jpg" width="300" name="chel" onmouseover="pr(this)">

Триви 25.08.2011 15:05

А зачем такая короткая задержка?
Может лучше какой-нибудь эффект из jQ заюзать?

melky 25.08.2011 15:11

ты скобку забыл поставить
<script type="text/javascript" language="javascript">
function pr(pic) {
setInterval(function () {
if(pic.width<640) {
pic.width=pic.width+10
}
},10);
*!*
}
*/!*
</script>
<img src="http://goiron.enetgallery.com/_ph/1/224558321.jpg" width="300" name="chel" onmouseover="pr(this)">

9xakep 25.08.2011 15:13

Можно,но мне надо сделать это как задачу на js =) А именно я хочу сделать это с помощью аргументов,но вот как видите не получается пока.

9xakep 25.08.2011 15:14

Ой дурак :D Спасибо.

systemiv 25.08.2011 15:29

А в jQ примерно так же организованы эффекты?

melky 25.08.2011 17:57

там не интервал, а таймауты

9xakep 27.08.2011 10:03

Чтож,дабы не создавать новую тему, решил продолжить здесь
Я решил не много модернизировать свой код, но как вы поняли он опять не работает=(
<script type="text/javascript" language="javascript">
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)
}
</script>
<img src="http://goiron.enetgallery.com/_ph/1/224558321.jpg"  width='500' onmouseover="pr(this)" ><br>
Увеличивать изображения на:
<select id='d'>
<option value='none'>Не увеличивать</option>
<option value='25'>25%</option>
<option value='50'>50%</option>
<option value='75'>75%</option>
<option value='100'>100%</option>
</select>

Я даже не знаю в чем ошибка тут, поскольку весь код правильный(а иначе бы алерт не вылетал)Далее алерт вылетает с правильными значениями, т.е. если выберем 25%,то вылетают 125(на сколько увеличить),500(ширина),и 625(итоговый размер).Но вот с самим изображением к сожалению ничего не делаться.

devote 27.08.2011 10:19

дауж, тут вряд ли что заработает

devote 27.08.2011 10:22

pic.width
Такого свойства нет у элементов, есть либо:
pic.style.width
либо:
pic.offsetWidth
далее после обработки значение никуда у вас не назначается. А это что?:
pr() = false;
Может все же надо так:
return false;

float 27.08.2011 10:28

Цитата:

pic.width
Такого свойства нет у элементов, есть либо:
это обращение к атрибуту видимо

devote 27.08.2011 10:29

Цитата:

Сообщение от float
это обращение к атрибуту видимо

=) Хотя у img он и правда должен быть

9xakep 27.08.2011 10:47

Вот именно что у img он есть.Далее, какая разница между
pr() = false и return false ?И так, и так ф-ия становится не рабочей.
Цитата:

далее после обработки значение никуда у вас не назначается.
А вот это не понял.

float 27.08.2011 11:14

Цитата:

pr() = false и return false
существенная. тк 1-е бред.

melky 27.08.2011 11:47

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

перед размещением кода, если хочешь, чтоы тебе помогли, оформляй его красиво! если не знаешь, что и как, то легче засунуть код сюда, на 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)


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