onload функция Javascript return undefined
Я вызываю функцию JavaScript, в которой хочу проверить высоту и ширину изображения перед загрузкой. я возвращаюсьfalse
значение, но в исходной функции, когда это консольный журнал, он даетundefined
.
Для лучшего понимания проверьте код. Код работает нормально, но я хочу получитьtrue
а такжеfalse
из функций JavaScript.
$(document).on('change', '#userfile', function() {
var result = ValidateAuthorImage(event, $(this));
console.log(result);
});
function ValidateAuthorImage(event, obj) {
var files = event.target.files;
var valid = true;
var height = 0;
var width = 0;
var _URL = window.URL || window.webkitURL;
for (var i = 0; i < files.length; i++) {
var img = new Image();
img.onload = function() {
height = img.height;
width = img.width;
//alert(width + " " + height);
if (width < 700 || height < 500) {
$("#msg_upload").html('<span style="color:red;">Please uplaod image with at least width = 700 and height = 500 </span>');
obj.value = "";
return false;
} else {
$("#msg_upload").html('');
}
}
img.src = _URL.createObjectURL(files[i]);
}
}

2 ответа
Я не знаю, есть ли еще код, но ваши возвраты попадают вimage.onload
методы, которые даже не вызываются (или вы не указали ту часть, в которой вы его вызываете. Но похоже, что вы можете это сделать
img.src = _URL.createObjectURL(files[i]);
return img.onload()
}
Это поможет вам выяснить, что пошло не так.
Поскольку вы ожидаете взамен логического статуса, верните true, если это Okey. вернуть false, если это не ОК. Вы «должны» вернуться с истинным или ложным значением.
return без логического значения (или return по умолчанию) - это то место, где вы получаете логический статус undefined.
Другие вопросы
- Состояние редактирования внутри модального окна1 ответ
Я делаю небольшое приложение для заметок. Когда пользователь пишет свой заголовок и заметку и нажимает «Отправить», заметка помещается на страницу ... Я хочу иметь возможность редактировать заметку. При нажатии кнопки редактирования появляется модальное окно, и я хочу, чтобы заголовок и примечание п...
- Выберите элемент, необходимый в vuejs, не работает1 ответ
Я новичок в vuejs. Я хочу сделать элемент выбора из раскрывающегося списка обязательным, я попытался добавить требуемый атрибут, как в приведенном ниже коде. <v-select :items="fournisseursByClient" ...
- Функция клавиатуры работает только один раз для первой буквы ввода2 ответ
У меня есть текстовый ввод, где пользователь вводит желаемое имя страницы<input type='text' id='pageName' name='PageName' class='form-control pageName'> Я пытаюсь использовать функцию keyup для запуска Ajax, чтобы проверить, существует ли страница, однако при вводе чего-то вродеindex Ajax от...
- как добавить ссылки на липкую панель навигации1 ответ
Я попытался добавить фоновое изображение для своего веб-сайта django, и это вообще не сработало. Я использую этот ответ из stackoverflow, а также ссылку на вопрос stackoverflow. Но это не сработало. А также я переношу изменения в базу данных. добавить фоновое изображение как в методе cssbackground-i...
- Написание умных средств защиты типов для типов объединения и обобщений1 ответ
У меня следующая структура:const fragmentTypes = [ 'Word', 'Sentence', ] as const; type FragmentType = typeof fragmentTypes[number]; interface IFragmentData { type: FragmentType; } interface IFragment<T extends IFragmentData> { id: string; type: T['type']; data: Omit&...
- Калькулятор JS форм1 ответ
Я сделал этот простой калькулятор своим первым проектом на JS. Я был на одном курсе, где мне сказали, что программисты «ленивы», поэтому они стараются писать как можно меньше кода. И вот мой вопрос. Я думаю, что мой калькулятор действительно долго работает над кодом. Я хотел бы знать, есть ли способ...
- Как создать html-страницу со ссылкой [закрыто]1 ответ
Закрыто . Этот вопрос должен быть более конкретным . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он фокусировался только на одной проблеме, отредактировав этот пост . Закрыт в прошлом месяце . Уточните этот вопрос Как разместить видео ключи на моем...
- как я могу игнорировать переменную длину строки между двумя известными строками при разделении в Javascript?5 ответ
Я новичок в JavaScript и новичок в программировании в целом, но я стараюсь как можно больше самоучиться. Я пытаюсь извлечь данные из переменной строки. Исходная строка имеет следующий формат:CAMERA NAME(NUM): North West Rd(D1) CAMERA NAME(NUM): Even Longer Camera Name(D2) CAMERA NAME(NUM): C...
- Как Webix реализует элементы управления скрытым текстом для обеспечения соблюдения правил1 ответ
Есть скрытыйtext контроль в требовании проекта. Текст присваивается результатомfile upload , но скрытый элемент управления, похоже, не отслеживается правилом правила. Образец выглядит следующим образомApp.form={ elements:[ .... ,{"cols": [ {id: "fil...
- Компонент экспорта React, который не отображается в PNG1 ответ
Я пытаюсь экспортировать диаграмму в изображение, и я хочу, чтобы изображение диаграммы имело настраиваемую легенду, которая не отображается на экране. Как я могу это сделать? На данный момент я попытался экспортировать с помощью response-component-export-image, но если компонент не отображается, сс...

"Завидую тестировщикам: все хотят с ними дружить."
false
. Однакоonload
проблема заключается в том, что onload фактически является асинхронным, поэтому вы не можете ничего вернуть изonload
во внешнюю областьValidateAuthorImage()
. Вам необходимо изменить шаблон, который вы используете для проверки размеров изображения, поскольку то, что вы пытаетесь сделать, невозможно. Я бы предложил проверить изображения и отобразить сообщение / ошибку рядом с изображением, которое не прошло проверку. Rory McCrossan