我需要获取我要更改 src
属性的原始宽度,这样:
<input hidden type="file" id="loader" accept="image/*">
$('#m1new').click(function(){
$('#loader').click();
});
$('#loader').change(function(){
var a = this.files[0];
var reader = new FileReader();
reader.onload = function(e) {
var src = e.target.result;
$('#imgt').attr("src", src);
}
reader.readAsDataURL(a);
var a = $('#imgt').width();
console.log(a);
});
控制台说-undefined
。
尝试以下:
$('#loader').change(function(){
var a = this.files[0];
var reader = new FileReader();
reader.onload = function(e) {
var img = new Image();
img.onload = function() {
console.log('width is: '+ img.width);
};
img.src = reader.result;
}
reader.readAsDataURL(a);
});
控制台说 - 未定义。
console.log
在设置src
之后,以及图像上的load
事件之后,CC_3应该是内部。
$('#loader').change(function() {
var a = this.files[0];
var reader = new FileReader();
reader.onload = function(e) {
var src = e.target.result;
$('#imgt').on("load", function() { // Hook `load` first
var a = $(this).width(); // Get the width once loaded
console.log(a);
}).attr("src", src); // Set src AFTER hooking `load`
}
reader.readAsDataURL(a);
});
在评论中您说:
这给了我计算的宽度-960px-而不是原始宽度-540px-在这种情况下。
这样做的唯一原因是,如果您将CSS应用于元素。如果这样做,您就不会在问题中提及它。(那是一种重要信息。)
您可以从不在DOM中的img
元素获得原始宽度(因此不受CSS的约束):
$('#loader').change(function() {
var a = this.files[0];
var reader = new FileReader();
reader.onload = function(e) {
var src = e.target.result;
var img = $("<img>");
img.on("load", function() { // Hook `load` first
var a = $(this).width(); // Get the width once loaded
console.log(a);
$("#imgt")[0].src = src; // Now set it on the image in the DOM
}).attr("src", src); // Set src AFTER hooking `load`
}
reader.readAsDataURL(a);
});