これがフィドルです:http://jsfiddle.net/SugKp/2/
クリックしたままにCLICK ME
すると、画像のサイズが変更されます。さて、問題は、コードによると、比例してサイズを変更することになっており、最初はそうですが、数秒後に伸び始めます。なぜこれが起こるのか分かりますか?
HTML:
<input type="text" name="zoom" id="zoom" value="0"/><a id="zoomBtn" href="#">CLICK ME</a><br/><br/>
<img id="zoomBox" src='http://openiconlibrary.sourceforge.net/gallery2/open_icon_library-full/icons/png/32x32/categories/applications-internet-5.png' width='32px' height='32px'>
JS:
$("#zoom").val("0");
var ztimer;
$("#zoomBtn").click(function(e){
e.preventDefault();
}).on('mousedown',function(e){
var tt = $(this);
zoomIncTimer = setInterval(function(_t=tt){
if(tt.data('clearTimer')==true){
clearInterval(zoomIncTimer);
}
else{
var ref = $("#zoom");
var zoom = parseInt(ref.val())+1;
if(isNaN(zoom))
{
zoom=0;
}
ref.val(zoom);
var currZoom = parseFloat($("#zoom").val());//this was in a different function call in actual code
if(isNaN(currZoom) || currZoom<0)
{
currZoom = 0;
}
var pic = $("#zoomBox");
var ew = 132;//default width
var eh = 170;//default height
var iw = pic.width();
var ih = pic.height();
var nw = 0;
var nh = 0;
/*if(iw<ih)
{
nw = ew+currZoom;
nh = ih*(nw/iw);
}
else
{*/
nh = eh+currZoom;
nw = iw*(nh/ih);
//}
pic.attr('width',nw+'px').attr('height',nh+'px');
}
},100);
tt.data('clearTimer',false);
}).on('mouseup mouseout',function(e){
$(this).data('clearTimer',true);
});
PS: 画像の属性に問題があります。css を使用して寸法を設定すると、正しく動作します。
念のため、Firefox を使用してテストしています。