Javascript 如何解决未捕获的类型错误:videopath.addEventListener不是函数?

Javascript 如何解决未捕获的类型错误:videopath.addEventListener不是函数?,javascript,dom-events,Javascript,Dom Events,我在单击按钮时调用一个函数,但面临未捕获的问题 TypeError:videopath.addEventListener不是函数 我的HTML文件 我想在我的案例中发送确切的文件路径,即视频路径 <div class="input-btn-container"> <input class="input-box" id="videopath" type="file" /> <div

我在单击按钮时调用一个函数,但面临未捕获的问题

TypeError:videopath.addEventListener不是函数

我的HTML文件

我想在我的案例中发送确切的文件路径,即视频路径

<div class="input-btn-container">
  <input class="input-box" id="videopath" type="file" />
  <div id="result"></div>
  <div class="btn-wrapper">
    <button class="renderbtn" onclick="runRender()">start</button>
  </div>
</div>
试试这个

函数runRender(){ 让客户端=“一些函数”; 让videopath=document.getElementById('videopath'); 让result=document.querySelector(“#result”); //这里我得到了一个错误。 videopath.addEventListener('input',()=>{ client.invoke(“counter”,videopath.value,(error,res)=>{ 如果(错误){ 控制台错误(error); }否则{ result.textContent=res; } }); }); videopath.dispatchEvent(新事件(“输入”); }

开始

只需在runRender()中进行修改,修改内容如下

function runRender(){
  let client = "some functions";

  let videopath = document.getElementById('videopath');
  let vedioPathValue = vediopath.files[0].path;
  let result = document.querySelector('#result');

  // here I am getting error.
  videopath.addEventListener('input', () => {
    client.invoke("counter", vedioPathValue , (error, res) => {
      if(error) {
        console.error(error);
      } else {
        result.textContent = res;
      }
    });
  });

  videopath.dispatchEvent(new Event('input'));
}

这对我来说很好。

您试图将事件添加到非dom元素,因此出现此错误,请尝试以下操作

function runRender(){
    let client = "some functions";

    let videopath = document.getElementById('videopath').files[0].path;
    let videopathElment = document.getElementById('videopath');
    let result = document.querySelector('#result');

    // here I am getting error.
    videopathElment.addEventListener('input', () => {
        client.invoke("counter", videopath, (error, res) => {
            if(error) {
                console.error(error);
            } else {
                result.textContent = res;
            }
        });
    });
    videopathElment.dispatchEvent(new Event('input'));
}
function runRender(){
    let client = "some functions";

    let videopath = document.getElementById('videopath').files[0].path;
    let videopathElment = document.getElementById('videopath');
    let result = document.querySelector('#result');

    // here I am getting error.
    videopathElment.addEventListener('input', () => {
        client.invoke("counter", videopath, (error, res) => {
            if(error) {
                console.error(error);
            } else {
                result.textContent = res;
            }
        });
    });
    videopathElment.dispatchEvent(new Event('input'));
}