我正在尝试在JS中编写一个小函数,我可以从jQuery调用它来调整图像大小。事情是我不知道如何在JS函数运行后将值返回给jQuery。以下是我到目前为止的情况:
$('a').click(function() {
var slideshowHeight = $(this).closest('.stage').css('height')
var slideshowWidth = $(this).closest('.stage').css('width')
var newImageHeight = $(this).attr('data-height')
var newImageWidth = $(this).attr('data-width')
fit_within_box(slideshowWidth, slideshowHeight, newImageWidth, newImageHeight);
$(this).children('img').css('width',new_width);
$(this).children('img').css('width',new_height);
}
function fit_within_box(box_width, box_height, width, height)
{
var new_width = width
var new_height = height
var aspect_ratio = parseInt(width) / parseInt(height)
if (new_width > box_width)
{
new_width = box_width
new_height = int(new_width / aspect_ratio)
}
if (new_height > box_height)
{
new_height = box_height
new_width = int(new_height * aspect_ratio)
}
return (new_width, new_height)
}
正如您所看到的,我正在尝试输入一些值并返回new_width和new_height。
感谢您的帮助!
答案 0 :(得分:1)
如果要一次返回两个值,可以使用对象文字...
return {
width: new_width,
height: new_height
};
答案 1 :(得分:0)
您可以尝试返回这样的JSON对象:
return {
new_height:height,
new_width:width
};
并在你的jquery函数中使用它:
var fit_img = fit_within_box(...);
...
$(this).children('img').css('height',fit_img.new_height);
答案 2 :(得分:0)
children('img');
上使用了两次宽度
jQuery的:
$(function(){
$('a').click(function() {
var slideshowHeight=$(this).closest('.stage').height();
var slideshowWidth=$(this).closest('.stage').width();
var newImageHeight=$(this).attr('data-height');
var newImageWidth=$(this).attr('data-width');
var size=fit_within_box(slideshowWidth,slideshowHeight,newImageWidth,newImageHeight);
$(this).children('img').css({'width':size[0],'height':size[1]});
});
function fit_within_box(box_width,box_height,new_width,new_height){
var aspect_ratio=new_width/new_height;
if(new_width>box_width){
new_width=box_width;
new_height=Math.round(new_width/aspect_ratio);
}
if(new_height>box_height){
new_height=box_height;
new_width=Math.round(new_height*aspect_ratio);
}
return [new_width,new_height];
}
});
带有一些壁纸的HTML:
<div class="stage" style="width:200px;height:200px;">
<a href="#" data-width="1280" data-height="1024"><img src="wallpaper_1280x1024.jpg" /></a>
</div>
干杯
-G。