D
Size: a a a
D
lv
АА
elems = document.getElementsByClassName("form-load-file")
for (elem of elems){
var input_file = elem.getElementsByClassName("form-control-file")[0];
var progress = function get_progress_bar() {
var progress_bar = elem.getElementsByClassName("progress-bar")[0];
return function() {
return progress_bar;
}
}()
var label = function get_label_upload() {
var label_upload = elem.getElementsByClassName("upload_info")[0];
return function() {
return label_upload;
}
}()
input_file.addEventListener("change", function(e) {
console.log(label())
console.log(progress())
}
}
I
АЕ
elems = document.getElementsByClassName("form-load-file")
for (elem of elems){
var input_file = elem.getElementsByClassName("form-control-file")[0];
var progress = function get_progress_bar() {
var progress_bar = elem.getElementsByClassName("progress-bar")[0];
return function() {
return progress_bar;
}
}()
var label = function get_label_upload() {
var label_upload = elem.getElementsByClassName("upload_info")[0];
return function() {
return label_upload;
}
}()
input_file.addEventListener("change", function(e) {
console.log(label())
console.log(progress())
}
}
var
. Его объявление всегда всплывает в блок функции, в котором он вызван. Соответственно у тебя на каждой итерации цикла перезаписываются значения переменных label и progress, так как их объявление в реальности находится в одной и той же функции. Тут 2 варианта - либо можешь использовать let
вместо var
, так как let
объявляет переменную не на функцию, а именно на блок кода (то, что обернуто в {}
), либо же обернуть сразу весь блок кода цикла в замыкание.Ф
SI
Ф
SI
Ф
Ф
C
SI
ML
ML