【问题标题】:Calling "Click()" method of an element returns undefined, although the element definitely exists [duplicate]调用元素的“Click()”方法返回未定义,尽管该元素肯定存在[重复]
【发布时间】:2013-05-19 19:47:16
【问题描述】:

我正在尝试调用具有特定 id 的文件输入的 click() 方法,但函数调用返回 undefined 并且基本上没有任何反应。我在这里复制了这种情况:http://jsfiddle.net/gkaG2/

很简单:

HTML

<input id="hiddenFileInput" type="file" multiple="multiple" accept="image/*" >

Javascript

document.getElementById('hiddenFileInput').click();
alert(document.getElementById('hiddenFileInput').click());

我尝试在元素上调用 click() 方法,但不起作用。然后我调用 alert() 来打印函数调用时返回的内容。它返回“未定义”。我显然做错了什么,但究竟是什么?

【问题讨论】:

  • 从警报中删除 .click()

标签: javascript file input click undefined


【解决方案1】:

您无法模拟点击input type=file。这是禁止的。它仅适用于另一个 onclick 处理程序。用户必须点击某些东西才能打开对话框。

【讨论】:

  • 据我了解Riacheche,这不是真的。这是 Mozilla 提供的演示:developer.mozilla.org/samples/domref/file-click-demo.html
  • 它只能在另一个 onclick 处理程序中工作。用户必须点击某些东西才能打开对话框。
  • 哦,这可以解释很多。我早些时候让它工作,但只有当用户点击一个按钮时。现在我试图在页面加载时调用它,它不起作用,我无法弄清楚为什么我的生活。非常感谢。
【解决方案2】:

这是一个安全问题。为了防止您的浏览器为您选择文件,您不能模拟点击事件。看到这个:In JavaScript can I make a "click" event fire programmatically for a file input element?

【讨论】:

  • 非常感谢您的回复,Zim84。事实证明,可以在文件输入上调用 click 方法,但正如 Riateche 所说,只有当用户单击某些内容以打开对话框时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多