我正在尝试将事件列表器附加到文件输入。 我以为它会像这样工作。但我在网上看过,似乎无法让它发挥作用。
<input type="file" id=image1 >
var image1 = document.getElementsByID("image1");
image1.addEventListener('change', alert(1));
答案 0 :(得分:1)
改变这个:
var image1 = document.getElementsByID("image1");
image1.addEventListener('change', alert(1));
到此:
var image1 = document.getElementById("image1");
image1.addEventListener('change', function(){ alert(image1); });
因为getElementsByID()
不是有效的方法调用,但getElementById()
是。
此外,您将执行一个调用alert()
的函数,而不是立即调用alert
并将alert
的结果指定为click
事件处理程序,我们需要将alert()
包装在一个函数中。
最后,alert(1)
没有显示任何内容,因为1
不是变量,也不是字符串。你应该写alert(image1.someProperty)
。由于image1
是file
类型,因此您可以访问与该元素关联的文件,然后访问特定文件,然后访问该文件的一个方面。
以下是整个事情:
var image1 = document.getElementById("image1");
image1.addEventListener('change', function(){
var files = image1.files;
alert(files[0].name);
});
<input type="file" id=image1 >
答案 1 :(得分:0)
试试这个:
var input = document.getElementsByTagName('input')[0];
input.onclick = function () {
this.value = null;
};
input.onchange = function () {
alert(this.value);
};
&#13;
<input type='file' value='C:\fakepath' />
&#13;
答案 2 :(得分:0)
<input type="file" id="image1" onchange="alert(1);" />