javascript - Javascript onclick 事件仅在第二次点击时触发

标签 javascript html css

我有一个onclick 问题。我在网上搜索了一下,但是遇到同样问题的人并没有完全解释他们是如何解决这个问题的。我不知道这里发生了什么。

我应该制作一个名为“加载新文件”的按钮,单击它时显示允许用户选择一个文件。

HTML

<input type="button" class="clear-button" onclick="clearB()" value="Clear Board" /><br /><br />
<input type="button" value="Load Game To Board" onclick="LoadGame()" />
<input type="button" id="get_file" onclick="n();" value="Load New Game">
<input type="file" id="my_file">

CSS

#my_file {
    display: none;
}

Javascript

function n() {
    if (document.getElementById('get_file') != null) {
        document.getElementById('get_file').onclick = function() {
            document.getElementById('my_file').click();
        }
        //LoadGame(); //triggers this function without allowing the user to open file.
    }
}

最后,我不能在函数 n() 中放置一个函数来操作文件的内容。无论我把它放在哪里,它都会在不打开文件选择对话框的情况下触发该功能。

最佳答案

第一次点击后对话框不可见,因为第一次点击给事件处理程序附加了一个匿名函数来打开 my_file 但它并没有执行它。

第二次点击执行匿名函数,因为它已经被附加。这将触发 my_file 的点击事件:

  function showFileUpload(){        
        document.getElementById('get_file').onclick = function() {
            document.getElementById('my_file').click()
        }
  }

此版本触发 my_file 的点击事件

 function showFileUpload_2(){
document.getElementById('my_file').click()                               
 }

这是html

  <input type="button" id="get_file" 
          onclick="showFileUpload_2();" value="Load New Game">
    <input type="file" id="my_file">

关于javascript - Javascript onclick 事件仅在第二次点击时触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23194675/

相关文章:

javascript - 仅显示部分参数的警报

javascript - 为什么文本在我的样式中闪烁?

javascript - 如何减少 jQuery 代码中的冗余?

javascript - 单击和悬停时的 Bootstrap 3 Popover

javascript - 如何在不重置 Tampermonkey 脚本的情况下重新加载页面?

html - 绝对定位元素在 Opera、FF 和 Chrome 中看起来相同

javascript - jQuery 在悬停状态下不触发事件

javascript - 当我单击元素的子元素时更改状态(+AngularJS)

html - 使用 bootstrap 和 css3 调整图像大小

javascript - 动画 div 检测其顶部或底部