0
関数から返された画像の幅と高さを取得しようとしますが、未定義として返されるたびに、関数のconsole.log値毎回undefinedを返します。関数はオブジェクトを返さなければなりませんが、未定義として返されます
私が疑う主な問題はスコープです。ネストされた関数なので、疑いがありますが、それは本当にわかりません。
JSコード
//get image width and height
$(document).ready(function(){
//object method
function dimensions($width, $height){
this.getWidth = $width;
this.getHeight = $height;
}
//gets image data
function readURL(input) {
var reader = new FileReader();
var image = new Image();
reader.onload = function (e) {
image.src = e.target.result;
}
reader.readAsDataURL(input.files[0]);
return image;
}
//gets image dimensions (width height)
function getImageDimensions($img){
var $dimensions;
$img.onload = function(){
$dimensions = new dimensions($img.width, $img.height);
}
return $dimensions;
}
$("#imgInp").change(function(){
alert(getImageDimensions(readURL(this)));
});
});
HTMLコード
<form id="form1" runat="server">
<input type='file' id="imgInp" accept="image/*"/>
</form>
それはオブジェクトを返しますが、undefinedを返していない理由を誰も私に説明できますか?
:つまり、あなたがこの機能
前にこのラインに
を実行 このような$のimg.onloadでリターンを置きます。 widthとheightはgetImageDimensions($ img)関数の画像の幅と高さに警告されます。 – mulvikciks
はい、私は答えを編集 –
それは何らかの理由でまだ未定義を返します。 – mulvikciks