Добрый вечер.
Имеется примерно следующая структура:
<label class="file-upload" for="upload-img">
<mark>Choose img...</mark>
...
<input type="file" id="upload-img">
</label>
...
<label class="file-upload" for="upload-img">
<mark>Choose img...</mark>
...
<input type="file" id="upload-img">
</label>
Необходимо по событию, что изменился инпут, присвоить его значение в его марк.
Делал так (после прочтения вот этой темы
http://javascript.ru/basic/closure)
function SetPath(sel, fm)
{
fm.innerHTML = sel.value;
}
function FileInput()
{
var label = document.пetElementsByClassName('file-upload');
for(var i = 0; i < label.length; i++)
{
var inp = label[i].getElementsByTagName('input')[0];
inp.onchange = function(x)
{
// console.log(x) выводит 0,1 при вызове функции FileInput()
return function()
{
// передать label как параметр не получилось
var label = document.getElementsByClassName('file-upload');
// console.log(x) выводит всегда 0 при изменении любого инпута
var mark = label[x].getElementsByTagName('mark');
SetPath(this, mark);
}
}(i)
}
}
Собственно вопрос - почему Х всегда 0? И как это можно реализовать?
Второй вопрос,
inp.onchange = function(x) {}
Разве здесь функция не требует первым параметром event? Если да, то почему в статье на которую я привел ссылку все работает? Если нет, то опять же почему? Заранее спасибо.