Я использую пакет Eel python, который помогает мне интегрировать Html / CSS / js с python, поэтому я динамически генерирую Html теги с помощью JS на основе ввода в файл python в основном это чатбот, и пользовательский интерфейс этого чатбота создается с помощью Html / js
main. js, который динамически создает теги
eel.expose(selectPDF);
function selectPDF(moduleSelection){ // moduleSelection is coming from python
console.log("select pdf called")
var DemoDom = document.createElement("input");
DemoDom.setAttribute('type','file'); //creating tag for input file
DemoDom.setAttribute('name','myfile');
DemoDom.id = "agenttext";
DemoDom.setAttribute('class','selectButton');
DemoDom.setAttribute('multiple','multiple');
DemoDom.setAttribute('onchange','showname("'+moduleSelection+'")')
chatBox.appendChild(DemoDom);
}
eel.expose(showname); //this is eel package syntax
function showname(moduleSelection){
console.log("i am here")
var name = document.getElementsByClassName('selectButton');
var fileList = [];
// if only one file is selected do this
if(name[0].files.length === 1){
console.log("File name: ", name[0].files[0].name)
var temp = name[0].files[0].name;
eel.getFileName(temp,moduleSelection); // passing file to python function getFileName
}
else{
for (var i = 0; i < name[0].files.length; i++) {
console.log("File name for loop: ", name[0].files[i].name)
fileList.push(name[0].files[i].name); // push all file to list
}
eel.getFileName(fileList,moduleSelection); // passing filelist to python function getFileName
}
return
}
Теперь, когда я вызываю selectPDF () в первый раз он создает тэг ввода и метод onchange вызова, все работает нормально
, но теперь, когда я вызываю его во второй раз, js снова создает тэг ввода и вызывает метод onchange, и он берет предыдущий файл, а не новый, который я хочу выбрать
см. изображение

ПРОСТО ВИДЕТЬ ИМЯ ФАЙЛА: image.png
игнорировать все другие красные ошибки
, как вы можете видеть на изображении, когда я в первый раз вызываю «изображение в текст», он работает нормально, создает DOM и продолжает работу, но когда второй Когда я вызываю «изображение в текст», он создает DOM, но выбирает предыдущий файл image.pn g вместо Sample.pdf
Вы можете увидеть имя файла консоли, для которого следует выбрать Sample.pdf вместо image.png при повторном вызове